我目前使用MySQL Connector/Python來查詢數據庫。MySQL使用一條語句執行多個類似的select查詢
目前,我在做的過程中的一個看起來是這樣的:
SELECT some_column FROM some_table WHERE some_column_2 = foo_1;
SELECT some_column FROM some_table WHERE some_column_2 = foo_2;
SELECT some_column FROM some_table WHERE some_column_2 = foo_3;
...
SELECT some_column FROM some_table WHERE some_column_2 = foo_9999;
SELECT some_column FROM some_table WHERE some_column_2 = foo_10000;
我運行一個非常大的數字非常相似的查詢。
每個查詢的單個結果都很重要。即使給定的查詢不會產生任何結果。
不幸的是,目前製作數千個查詢的方法非常耗時且效率極低。
所以,我的問題是:有什麼辦法可以將此過程壓縮爲單個查詢,以便更有效地運行?
我覺得在MySQL中這應該是絕對可行的,我相當肯定我在這裏失去了一些東西。
到目前爲止,我已經使用MySQL連接器/ Python的executemany()函數嘗試,就像這樣:
cursor.executemany("SELECT some_column FROM some_table WHERE some_column_2 = %s", foo_list)
我預計產生的結果,每一個人查詢的列表,但優化儘可能多的查詢。不幸的是,這似乎在MySQL Connector/Python中不起作用,並導致語法錯誤。
我在猜測,executemany並不意味着與SELECT語句一起使用,只能與INSERT語句一起使用。
我也搜索了互聯網的方式來執行批量選擇查詢,但我還沒有找到任何與我的情況相關的任何事情。
我想明確指出,
SELECT some_column FROM some_table WHERE some_column_2 IN (foo_1, foo_2, foo_3, etc);
是不是一個有效的解決方案,因爲它不從每個單獨保存查詢結果(或缺乏)。
任何與此協助將受到歡迎。
是的,更有效率的東西會更有效率。 – Strawberry
請參閱[爲什麼我應該爲我認爲是非常簡單的SQL查詢提供一個MCVE](http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for - 什麼似乎對我來說是一個非常簡單的SQL查詢) – Strawberry
爲什麼不獲取'some_column_2'以及單個SELECT查詢並顯式映射(使用字典)「some_column_2」與對應的「some_column」? –