【问题标题】:How to automate in SQL query split using Python如何使用 Python 在 SQL 查询拆分中实现自动化
【发布时间】:2017-10-18 09:56:22
【问题描述】:

这是我的查询

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 )

我不想硬编码,因为它容易出错,假设如何做到这一点?

【问题讨论】:

    标签: python sql pandas loops dataframe


    【解决方案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 异常

    【讨论】:

    • 所以如果我想调用一个块,我只需调用df1df2
    • @NabihIbrahimBawazir,不,您可以像常规 Python 列表一样访问 dfs 中的 DF - dfs[0] - 第一个 DF,dfs[1] - 第二个 DF,...,等等。
    • 所以如果我打电话给dfs 它是一个完整的桌子?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 2011-01-30
    相关资源
    最近更新 更多