我怎么知道以下更新是否成功执行,现在语句执行但表没有反映。
cursor = mysql.cursor()
cursor.execute("""UPDATE foo SET key1 = %s WHERE id = %s""", (val1, id2))
我怎么知道以下更新是否成功执行,现在语句执行但表没有反映。
cursor = mysql.cursor()
cursor.execute("""UPDATE foo SET key1 = %s WHERE id = %s""", (val1, id2))
据我所知,你需要打电话
mysql.commit()
使您的更改生效。
这可以确保您的数据库操作(可以有多个)在一个所谓的事务中执行。如果出现问题,您可以还原整个更改。
在一个事务中,您将属于一起的东西放在一起,例如添加一个新人并在另一个表中设置对该人的引用。
另请参阅此页面上的插入操作rollback
一章(在异常情况下使用):http ://www.tutorialspoint.com/python/python_database_access.htm
您可以参考 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()
如果默认禁用自动提交,则需要显式执行commit
语句。
SET autocommit = 1
启用自动提交,并且每个语句都将在它们运行时提交。参考这个链接