**我的代码**
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
答案 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的哪个数据库不喜欢双引号。