我使用pandas.DataFrame.to_sql
方法将数据帧写入sqlite数据库。根据DataFrame.to_sql中的帮助页,chunksize参数可以控制要插入到表中的行数,当它为None(默认值)时,所有的行都将被一次插入。所以我认为我们可以插入的行数可能是无限的,就像表中的行数是无限的,只是取决于磁盘的大小。在
但是,当我使用这个方法的时候,我发现我不能一次插入太多的行(我可以逐渐地追加小块数据),有时最大行数是50000,有时是100000(不同的列),我想知道我们要插入到表中的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")
目前没有回答
相关问题 更多 >
编程相关推荐