更新表Python时出错

时间:2013-10-15 19:59:02

标签: python sqlite

**我的代码**

    cur.execute('Update  stud  SET(fname,mname,lname,course,yns,radio,sy)VALUES("%s","%s","%s","%s","%s","%s","%s") where Studnum=="%s"'%(fname,mname,lname,course,yns,status,sy,studnum))
    con.commit()

错误

    cur.execute('Update  stud SET(fname,mname,lname,course,yns,radio,sy)VALUES("%s","%s","%s","%s","%s","%s","%s") where Studnum=="%s"'%(fname,mname,lname,course,yns,status,sy,studnum))

sqlite3.OperationalError:near“(”:syntax error

2 个答案:

答案 0 :(得分:0)

这是一个基本的SQL语法问题。以下是编写查询的方法:

q = '''
    UPDATE stud SET
        fname = ?,
        mname = ?,
        lname = ?,
        course = ?,
        yns = ?,
        radio = ?,
        sy = ?
     WHERE
        Studnum = ?'''

cur.execute(q, (fname,mname,lname,course,yns,status,sy,studnum))

我将%s替换为?,这是您应该如何将参数传递给Python中的查询。

这些被称为参数化查询并且这样做有助于防止SQL注入,因为您没有直接在SQL查询中注入值。不仅如此,它还将确保为数据库类型正确转义值。

在Python中,有一种处理称为数据库api(DB API)的所有数据库的标准方法。 wiki.python.org上的wiki entry详细介绍,manual page for sqlite in Python也有一些例子。

答案 1 :(得分:-2)

这会有用吗?

cur.execute("Update  stud  SET(fname,mname,lname,course,yns,radio,sy)VALUES('{}}','{}','{}','{}','{}','{}','{}') where Studnum=='{}'".format(fname,mname,lname,course,yns,status,sy,studnum))

我不知道你使用MSSQL的哪个数据库不喜欢双引号。