我如何知道以下更新是否成功执行,现在语句执行但该表没有反映出来。
cursor = mysql.cursor()
cursor.execute("""UPDATE foo SET key1 = %s WHERE id = %s""", (val1, id2))
答案 0 :(得分:1)
据我所知,您需要致电
mysql.commit()
让您的更改生效。
这可确保您的数据库操作(您可以拥有多个)在一个所谓的事务中执行。如果出现问题,您可以恢复整个更改。
在一次交易中,您会放置属于一起的内容,例如添加新人并在另一个表中设置对该人的引用。
另请参阅此页面上的插入操作一章(例如,如果发生异常,他们会使用rollback
):http://www.tutorialspoint.com/python/python_database_access.htm
答案 1 :(得分:0)
您可以参考Source Forge上的文档http://mysql-python.sourceforge.net/MySQLdb.html。
首先,正如您所提到的,您可以在此游标上执行连接,游标和查询。这是来自doc:
的示例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()
答案 2 :(得分:0)
如果默认情况下禁用自动提交,则需要显式执行commit
语句。
SET autocommit = 1
启用自动提交,每个语句都会在运行时提交。请参阅this link