-2

** マイコード **

    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: "(" の近く: 構文エラー

4

2 に答える 2

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 エントリで詳細が説明されており、Python の sqlite のマニュアル ページにもいくつかの例があります。

于 2013-10-15T20:06:11.047 に答える
-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 で作業しているデータベースが二重引用符を好まないかどうかはわかりません。

于 2013-10-15T20:07:02.320 に答える