【问题标题】:Python mysql-connector multi insert not working?Python mysql-connector 多插入不起作用?
【发布时间】:2016-02-18 03:14:45
【问题描述】:

我刚开始使用 Python 的 Mysql 连接器库,我似乎遇到了一个我无法理解的问题。

我让 Python 动态生成要在 MySQl 数据库上执行的插入语句。

我在一个字符串中将它们一起批处理,然后在一个 cusrsor.execute() 语句中一起执行每个 n,但是由于某种原因,当我检查数据库和表时,找不到新行。

我什至只用两个插入语句一起尝试过,即使我调用执行,调用提交,然后按该顺序关闭游标和连接,它们仍然没有持久化到数据库中。

如果我在执行命令中只有一个插入语句并且我删除了多标志,那么它工作正常。

有人知道为什么会这样吗?

示例代码:

from mysql import connector
my_sql_connection = connector.connect(user='user', password='pass',
                                              host='hostname',
                                              database='db')
mysql_cursor = my_sql_connection.cursor()

statement = "Insert into table (col) values (1); Insert into table (col) values (2);"

mysql_cursor.execute(statement, multi=True)
my_sql_connection.commit()
mysql_cursor.close()
my_sql_connection.close()

调用此代码后,没有错误,但表中没有显示新行。

【问题讨论】:

    标签: python mysql mysql-python


    【解决方案1】:

    您应该尝试使用 executemany 而不是带有 multi 标志的 execute,这通常更容易实现。

    另外,我建议您切换到PyMySQL,它有一个非常完整的文档,根据我的经验,它比 mysql 连接器库“开箱即用”更好。

    【讨论】:

    • 我曾经使用 PyMSSQl 连接到我们的旧版 SQL Server 数据库,但是它写得非常糟糕,因为即使您使用了 fetchmany(n ) 命令。你知道 PyMySQL 是否相似,或者它的获取方式是否更智能?谢谢
    • @Mo.我没有深入研究 PyMySQL 的工作原理,但我已经用它来处理相当大的数据库(约 400k 行),而且问题为零,这就是我通常推荐它的原因。在此之前,我曾尝试过 MySQL 连接器、OurSQL 和其他一些连接器,但使用起来都很痛苦,而且不切实际。
    猜你喜欢
    • 2011-08-27
    • 2020-09-20
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多