python 如何将一个包含上万数据的列表分批存入数据库?

我不是忘尘 2020-07-10 08:39:25
我要把数据从redis往mysql里写,从redis里取出上万value组成一个列表,一次性存进mysql的话可能会出现超时的问题,虽然可以把超时时间调大,但如果数据量越来越大就不现实
想把这个列表分段,用循环的话感觉不太好判断
...全文
747 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
我不是忘尘 2020-07-10
  • 打赏
  • 举报
回复
解决了 用列表分片和while循环

start = 0
end = 0
while True:
            end += 500
            values = redis_util.get_values_batch_keys(keys[start:end])
            insert_list = []
            for row in values:
                params = row
                row = json.loads(row, encoding='utf-8')
                a_url = row['action']
                insert_list.append((2, a_url, params))
            if len(insert_list) > 0:
                db_util.executemany_no_commit(insert_sql, insert_list)
                redis_util.delete_batch(keys[start:end])
                db_util.commit()
            start = end
            if end > len(keys):
                break

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧