python - 每次我可以使用 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")
解决方案
推荐阅读
- python - 使用烧瓶python将图像从数据库加载到网页
- python - 等待多个反应 Discord.py
- python - 为什么 11 / 1 % 2 / 11 在 Python 中给出的答案与 (11 / 1) % (2 / 11) 不同?
- r - 用边框闪亮突出情节
- html - 如何防止个人 Web 服务器向我的网站注入额外的 head、frameset 和 frame 标签?
- python - 从 json/Dict Python 中删除密钥
- agora.io - Agora.io 中的语音直播
- performance - Lighthouse 报告 FCP 和性能选项卡 FCP 之间的不一致
- javascript - 同一对象上的不同类型结果
- c# - IssuerSigningKeyResolver 调用异步方法