更新查询在python中引发异常

时间:2014-09-24 06:15:05

标签: python mysql sql

我的要求是如果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()

非常感谢任何帮助!

3 个答案:

答案 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