我刚开始使用Python的Mysql Connector库,我似乎遇到了一个我无法理解的问题。
我让Python动态生成要在MySQl数据库上执行的Insert语句。
我在一个字符串中将它们一起批处理,然后我在一个cusrsor.execute()
语句中一起执行每个n但是出于某种原因,当我检查数据库和表时,新行无处可寻。
我尝试了即使只有两个插入语句,它们仍然没有持久保存到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()
调用此代码后,没有错误,但表中没有显示新行。
答案 0 :(得分:4)
您应该尝试使用executemany代替execute
多标志,它通常更容易实现。
此外,我建议您切换到PyMySQL,它有一个非常完整的文档,根据我的经验,工作得更好,开箱即用'比mysql连接器库。