首页 > 解决方案 > 每次我可以使用 pandas.DataFrame.to_sql 插入数据库中的表的最大行数

问题描述

我正在使用该pandas.DataFrame.to_sql方法将 DataFrame 写入 sqlite 数据库。根据DataFrame.to_sql中的帮助页面,chunksize参数可以控制我们要插入到表中的行数,当它为 None(默认)时,将一次插入所有行。所以我认为我们可以插入的行数可能是无限的,就像一个表中的行数是无限的,只是取决于你的磁盘大小。

虽然,当我使用这种方法时,我发现我不能一次插入太多行(我可以逐渐追加一点点数据),有时最大行数是50,000,有时是100,000(不同的列),我想知道我们要插入到表中的DataFrame对象的大小是否有限制,如何计算一次可以插入到表中的最大行数?

谢谢大家的回复。^_^ 错误信息

def write_db(data, table_name, db_name):
    """write DataFrame to sqlite database

    :type data: pandas.DataFrame
    :type table_name: str
    :type db_name: str
    :return: None
    """
    maximum_rows = 50000
    loop = divmod(data.shape[0], maximum_rows)[0]
    engine = create_engine("sqlite:///{}.db".format(db_name))
    for i in range(loop):
        data_part = data.iloc[i*maximum_rows:(i+1)*maximum_rows, :]
        data_part.to_sql(table_name, con=engine, index=False,
                         index_label="entity_name", if_exists="append")
    data_left = data.iloc[loop*maximum_rows:, :]
    data_left.to_sql(table_name, con=engine, index=False,
                     index_label="entity_name", if_exists="append")

标签: pythondatabasepandassqlalchemy

解决方案


推荐阅读