Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mysql连接器多插入不工作?_Python_Mysql_Mysql Python - Fatal编程技术网

Python mysql连接器多插入不工作?

Python mysql连接器多插入不工作?,python,mysql,mysql-python,Python,Mysql,Mysql Python,我刚开始使用用于Python的Mysql连接器库,我似乎遇到了一个无法解决的问题 我让Python动态生成要在MySQl数据库上执行的Insert语句 我在一个字符串中将它们批处理在一起,然后在onecusrsor.execute()语句中每n个一起执行一次。然而,由于某种原因,当我检查数据库和表时,新行找不到了 我甚至只尝试了两个insert语句,但它们仍然没有持久化到DB,即使我调用execute,调用commit,然后按顺序关闭游标和连接 如果在execute命令中只有一条insert语句

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

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

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

我甚至只尝试了两个insert语句,但它们仍然没有持久化到DB,即使我调用execute,调用commit,然后按顺序关闭游标和连接

如果在execute命令中只有一条insert语句,并且删除了multi标志,那么它就可以正常工作

有人知道为什么会这样吗

示例代码:

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()
调用此代码后,没有错误,但是表中没有显示新行

您应该尝试使用multi标志代替
execute
,它通常更易于实现


另外,我建议你换成,它有一个非常完整的文档,根据我的经验,“开箱即用”的效果比mysql连接器库好得多。

我曾经使用PyMSSQl连接到我们的旧版SQL Server DB,但是它编写得非常糟糕,因为即使使用fetchmany(n),游标也会将select查询的整个结果集加载到内存中指挥部。你知道PyMySQL是类似的还是它在获取数据方面更聪明?Thanks@Mo.我没有详细介绍PyMySQL的工作原理,但我用它来处理大小相当大的DBs(约40万行),没有任何问题,这就是我通常推荐它的原因。在此之前,我曾尝试过MySQL连接器、OurSQL和其他一些,但都很难使用,而且根本不实用。