【问题标题】:Python multiple MySQL InsertsPython 多个 MySQL 插入
【发布时间】:2015-10-12 03:27:38
【问题描述】:

我正在尝试像这样在 MySQL 数据库上进行多次插入:

p = 1
orglist = buildjson(buildorgs(p, p))
while (orglist is not None):
    for org in orglist:
        sid = org['sid']
        try:
            sql = "INSERT INTO `Orgs` (`sid`) VALUES (\"{0}\");".format(sid)
            cursor.execute(sql)
            print("Added {0}".format(org['title']))
        except Exception as bug:
            print(bug)
    conn.commit()
    conn.close()
    p += 1
    orglist = buildjson(buildorgs(p, p))

但是我不断收到一堆2055: Lost connection to MySQL server at 'localhost:3306', system error: 9 Bad file descriptor

我怎样才能一次正确地进行多次插入,这样我就不必在每次插入后都提交。另外,我只能在 while 循环之后执行conn.close(),还是将其保留在原处更好?

【问题讨论】:

    标签: python mysql api insert


    【解决方案1】:

    这可能与this question 和/或this question 有关。您可能会尝试从这些问题的答案中获得一些想法:

    1. 尝试在关闭连接之前关闭游标(cursor.close()conn.close() 之前;我不知道您应该在conn.commit() 之前还是之后关闭游标,所以两个都试试。)
    2. 如果您使用的是 Oracle MySQL 连接器,请尝试改用 PyMySQL;有几个人说这为他们解决了这个问题。

    【讨论】:

    • 切换库给了我:回溯(最近一次调用最后):文件“grabber.py”,第 57 行,在 poporgs() 文件“grabber.py”,第 42 行,在 poporgs conn.commit() 文件 "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py",第 718 行,在提交 self._execute_command(COMMAND.COM_QUERY, "COMMIT") 文件 "/usr /local/lib/python2.7/dist-packages/pymysql/connections.py",第 956 行,在 _execute_command 中引发 err.InterfaceError("(0, '')") pymysql.err.InterfaceError: (0, '' )
    • 我看到你刚刚接受了这个答案,但你最后的评论表明它没有为你工作。发生了什么变化?您可能应该提及(在评论中,如果没有别的)您做了哪些不同的事情使这个答案对您有用,这样以后发现这个问题的任何人都会知道。
    • 我在关闭连接之前关闭了光标,并从 while 循环中删除了 conn.close() 直到代码的最后。不确定其中哪一个修复了它,但它开始工作了。另外,感谢您的提示,我往往会忘记评论稍后实际解决问题的内容:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2011-03-22
    相关资源
    最近更新 更多