Python中文
首页
教程
问答
标签
搜索
登录
注册
PostgreSQL连接在执行大型ins时意外关闭
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我用之前从另一个数据库中选择的~11.000.000行填充PostgreSQL表。我使用Python和psycopg2。整个过程估计需要1.5小时才能完成。但是,在大约30分钟后,我收到“连接意外关闭”异常。源代码如下:</p> <pre><code>incursor = indb.cursor() incursor.execute("SELECT ...") indb.commit() # (1) close transaction outcursor = outdb.cursor() rows = 0 for (col1, col2, col3) in incursor: # incursor contains ~11.000.000 rows outcursor.execute("INSERT ...", (col1, col2, col3)) # This fails after ~30 minutes row += 1 if row % 100 == 0: # (2) Write data every 100 rows outcursor.close() outdb.commit() outcursor = outdb.cursor() incursor.close() outcursor.close() outdb.commit() </code></pre> <p>在第一次失败的尝试之后,我插入了<code>(1)</code>和{<cd2>},假设一个打开的事务的时间上限为~30分钟,或者一个游标有一个挂起的插入的上限。似乎这些假设都不是真的,错误就在别的地方。在</p> <p>这两个数据库都存储在一个VirtualBox机器上,我通过主机的端口转发来连接它。我在主机上运行程序。在</p> <p>这两个数据库只是为了测试目的,它们没有其他连接要管理。也许我必须重写这个问题来解决这个问题,但是我需要非常耗时的其他地方的插入(运行大约几天),所以我非常关心<code>psycopg2</code>或PostgreSQL中隐藏的时间限制。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我有一个django管理命令,可以更新成千上万的行。过了一段时间,我看到了同样的错误。我相信内存使用量超出了限制。但不知道如何在事务中手动控制命令。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
文本导入时标题行中的特殊字符
3 回答
文本小部件:在没有输入时更新并在循环后保持空闲
9 回答
文本小部件tkin
2 回答
文本小部件tkinter中的标签更改或文本外观更改是否有撤消功能?
8 回答
文本小部件tkinter复制图像选项
1 回答
文本小部件上的Python Tkinter ttk滚动条未缩放
7 回答
文本小部件上的滚动条可能需要根据制表符ord显示前进行滚动
8 回答
文本小部件不显示lis中的内容
2 回答
文本小部件不显示Unicode字符
4 回答
文本小部件中写入的行间距
9 回答
文本小部件中的文本作为变量
6 回答
文本小部件中的滚动条仅显示在底部
9 回答
文本小部件中的选项卡键空间计数
1 回答
文本小部件作为Lis
1 回答
文本小部件在主框架中扩展列宽
3 回答
文本小部件未使用删除功能清除
3 回答
文本小部件滚动动画(Tkinter、Python)
4 回答
文本居中。格式正确吗?
8 回答
文本差分算法
6 回答
文本已知时音频文件中的单词索引
10 回答