在Python MySQL中执行INSERT查询的正确方法是什么?

Bar*_*kat 0 python mysql

我有一个连接到本地MySQL数据库的python脚本.我知道它连接正确,因为我可以做到这一点并获得正确的结果:

cursor.execute("SELECT*FROM reel")

但是当我尝试做任何插入语句时,它什么都不做.没有错误消息,没有例外.当我从sqlyog检查时,数据库中没有显示任何内容.这就是我的代码:

self.cursor.executemany("INSERT INTO reel(etime,etext)VALUES(%s,%s)",tups)

其中tups是一个看起来像这样的元组列表('0000-00-00 00:00:00','text').没有错误显示,如果我将生成的SQL查询复制粘贴到sqlyog中,则可以正常工作.我已经尝试生成查询并对其执行cursor.execute()并且没有错误也没有结果.谁知道我做错了什么?

raz*_*tia 7

你需要做一个self.cursor.commit()self.cursor.executemany("INSERT INTO reel (etime,etext) VALUES (%s,%s)", tups)

从1.2.0开始,默认情况下,MySQLdb根据DB-API标准(PEP-249)的要求禁用自动提交.如果您使用InnoDB表或某些其他类型的事务表类型,则需要在关闭连接之前执行connection.commit(),否则您的更改都不会写入数据库.

相反,您也可以使用connection.rollback()来丢弃自上次提交以来所做的任何更改.

重要说明:某些SQL语句(特别是像CREATE TABLE这样的DDL语句)是非事务性的,因此无法回滚,并且它们会导致挂起的事务提交.

是FAQ