我需要查詢數據庫以進行一些數據分析,並且我有超過2000萬條記錄。我限制訪問數據庫,並在8分鐘後查詢超時。因此,我試圖將查詢拆分成更小的部分,並將結果保存爲Excel以供稍後處理。在MySQL中增量選擇記錄並在Python中保存爲csv
這是我到目前爲止。我怎樣才能讓python循環查詢每個x-number(例如1,000,000)記錄,並將它們存儲在同一個csv中,直到搜索到所有(20 mil ++)記錄爲止?
import MySQLdb
import csv
db_main = MySQLdb.connect(host="localhost",
port = 1234,
user="user1",
passwd="test123",
db="mainDB")
cur = db_main .cursor()
cur.execute("SELECT a.user_id, b.last_name, b.first_name,
FLOOR(DATEDIFF(CURRENT_DATE(), c.birth_date)/365) age,
DATEDIFF(b.left_date, b.join_date) workDays
FROM users a
INNER JOIN users_signup b ON a.user_id a = b.user_id
INNER JOIN users_personal c ON a.user_id a = c.user_id
INNER JOIN
(
SELECT distinct d.a.user_id FROM users_signup d
WHERE (user_id >=1 AND user_id <1000000)
AND d.join_date >= '2013-01-01' and d.join_date < '2014-01-01'
)
AS t ON a.user_id = t.user_id")
result=cur.fetchall()
c = csv.writer(open("temp.csv","wb"))
for row in result:
c.writerow(row)
也許嘗試使用L IMIT和OFFSET與SQL查詢? –