我的要求是如果id为1.将名称字段更改为sun .Below是我的代码。它会在更新时抛出异常和打印错误吗?。我在查询或python代码上做错了什么?
import MySQLdb
import datetime
a="sun"
b=1
sql="update selva set name=%s where selid=%d"
try:
cursor.execute(sql,[a,b])
db.commit()
except:
print "error in update"
db.rollback()
db.close()
非常感谢任何帮助!
答案 0 :(得分:3)
查询中的占位符应为%s
,而不是%d
。我已修改您的异常处理程序以捕获并打印异常,并在finally
子句中关闭数据库连接以确保它始终关闭。
import MySQLdb
import datetime
a="sun"
b=1
sql="update selva set name=%s where selid=%s"
try:
cursor.execute(sql, [a, b])
db.commit()
except Exception, exc:
print "error in update"
print "Exception : %s" % exc
db.rollback()
finally:
db.close()
答案 1 :(得分:0)
试试这个:
import MySQLdb
import datetime
a="sun"
b=1
sql="update selva set name = '%s' where selid = '%d'"
cmd = sql % (a, b)
try:
cursor.execute(cmd)
db.commit()
except Exception, e:
print "error in update"
print repr(e)
db.rollback()
db.close()
判断是否打印出错误信息。
答案 2 :(得分:0)
您可以像这样使用execute
调用
cursor.execute ("update selva set name=%s where selid=%s", (a,b)) #passing a tuple with parameters
或
cursor.execute ("update selva set name='%s' where selid=%d" % (a,b)) #passing a raw sql command with interpoled data