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