每次可以使用向数据库中的表插入的最大行数pandas.DataFrame.to_sq

2024-04-25 14:51:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

但是,当我使用这个方法的时候,我发现我不能一次插入太多的行(我可以逐渐地追加小块数据),有时最大行数是50000,有时是100000(不同的列),我想知道我们要插入到表中的DataFrame对象的大小是否有限制,如何计算一次可以插入表的最大行数?在

谢谢你的回复^_^ the error message

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")

Tags: tonameloopdataframepandasdbsqlitesql