首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用python psycopg2插入行时,docker进程将终止

当使用python psycopg2插入行时,docker进程将终止
EN

Stack Overflow用户
提问于 2017-06-06 10:19:01
回答 1查看 602关注 0票数 2

数据库是docker中的PostgreSQL9.5.1。我的主机有3.75GB内存,linux。在某些方法中,我使用下面的代码使用psycopg2一个接一个地插入490000行。

代码语言:javascript
复制
student_list = [(name, surname, explanation)]
args_str = ','.join(cur.mogrify("(%s,%s,%s)", x) for x in student_list)
cur.execute('INSERT INTO students (name, surname, explanation) VALUES ' + args_str)

这使得我的数据库停靠器内存似乎已满,并产生以下错误:

日志:服务器进程(PID 11219)被信号9:终止终止 详细信息:失败的进程正在运行 日志:终止任何其他活动服务器进程 docker@test_db警告:由于另一个服务器进程崩溃而终止连接 docker@test_db详细信息:邮局管理员命令此服务器进程回滚当前事务并退出,因为另一个服务器进程异常退出,并且可能损坏共享内存。 docker@test_db提示:稍后您应该能够重新连接到数据库并重复您的命令。 docker@test_db警告:由于另一个服务器进程崩溃而终止连接 docker@test_db详细信息:邮局管理员命令此服务器进程回滚当前事务并退出,因为另一个服务器进程异常退出,并且可能损坏共享内存。 ..。docker@test_db致命:数据库系统处于恢复模式 日志:终止所有服务器进程;重新初始化 日志:数据库系统被中断;最后一次知道时间为2017-06-06 :39:40 日志:数据库系统没有正确关闭;自动恢复正在进行中 docker@test_db致命:数据库系统处于恢复模式 docker@test_db致命:数据库系统处于恢复模式 docker@test_db致命:数据库系统处于恢复模式 日志:启动自动真空发射器

脚本给出了日志:

内部异常 SYSCALL错误:检测到EOF

我试着在连续查询之间放置一些睡眠时间,但得到了相同的结果。这有什么限制吗?此外,我试图连接和断开对每个查询,但得到相同的结果。这些是我的连接和断开方法。

代码语言:javascript
复制
def connect():
    conn = psycopg2.connect(database=database_name,
                            user=database_user,
                            host=database_host,
                            port=database_port)
    conn
  .set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)
    cur = conn.cursor()
    return conn, cur

def disconnect(conn, cur):
    cur.close()
    conn.close()
EN

回答 1

Stack Overflow用户

发布于 2017-06-09 05:29:43

这就是我所做的。实际上我的记忆已经足够丰富了。这就是为什么linux操作系统过去在Postgresql中杀死进程的原因。每个插入进程中都有1M个值。诀窍是我把数据列表分成几个块,然后用100 K乘100 K进行测试。效果很好。谢谢你的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44387365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档