更新表Python时出错

2024-10-04 03:17:50 发布

您现在位置:Python中文网/ 问答频道 /正文

**我的代码**

    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:靠近“(”:语法错误


Tags: executeupdatewherefnameradiovaluessetcur
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一起工作的哪个数据库不喜欢双引号。你知道吗

这是一个基本的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(dbapi)。上的wiki entry维基.python.org更详细地讲,manual page for sqlite in Python还有一些例子。你知道吗

相关问题 更多 >