0

我怎么知道以下更新是否成功执行,现在语句执行但表没有反映。

cursor = mysql.cursor()
cursor.execute("""UPDATE foo SET key1 = %s  WHERE id = %s""", (val1, id2))
4

3 回答 3

1

据我所知,你需要打电话

mysql.commit()

使您的更改生效。

这可以确保您的数据库操作(可以有多个)在一个所谓的事务中执行。如果出现问题,您可以还原整个更改。

在一个事务中,您将属于一起的东西放在一起,例如添加一个新人并在另一个表中设置对该人的引用。

另请参阅此页面上的插入操作rollback一章(在异常情况下使用):http ://www.tutorialspoint.com/python/python_database_access.htm

于 2013-01-24T08:03:15.333 回答
0

您可以参考 Source Forge 上的文档, http: //mysql-python.sourceforge.net/MySQLdb.html

首先,正如您提到的,您在此游标上执行连接、游标和查询。这是来自文档的示例:

import MySQLdb
db=MySQLdb.connect(passwd="moonpie",db="thangs")
c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
          WHERE price < %s""", (max_price,))

然后,您使用以下方法获取结果:

c.fetchone()

结果作为单个元组返回。如果结果包含更多行,请使用

c.fetchall()

或者

c.fetchmany()
于 2013-01-24T09:00:25.350 回答
0

如果默认禁用自动提交,则需要显式执行commit语句。

SET autocommit = 1启用自动提交,并且每个语句都将在它们运行时提交。参考这个链接

于 2013-01-24T09:22:08.377 回答