如何使用Python自动化SQL查询分割

时间:2017-10-18 09:56:23

标签: python sql pandas loops dataframe

这是我的查询

df = pd.read_sql('SELECT id, timestamp, location_id FROM orders', con=db_connection)

我想分成这个

df1 = pd.read_sql('SELECT id, timestamp, location_id FROM orders where id<=1000000', con=db_connection)
...
df100 = pd.read_sql('SELECT id, timestamp, location_id FROM orders where id>99000000 and id<=100000000', con=db_connection )

我不想硬编码因为它容易出错,怎么想这样做呢?

1 个答案:

答案 0 :(得分:1)

您可以使用chunksize parameter

sql_reader = pd.read_sql('SELECT id, timestamp, location_id FROM orders', 
                         con=db_connection, chunksize=1000000)

dfs = [df for df in sql_reader]

dfs - 是一个DataFrame的列表,所以:

  • dfs[0] - 第一个DF(前1000000行)
  • dfs[1] - 第二个DF(接下来的1000000行)
  • 等......

如果您需要一个完整的表格,pd.concat(dfs, ignore_index=True)会返回一个DataFrame,其中包含来自orders表的所有

注意:如果内存不适合,您可能会遇到MemoryError异常