0

なぜこれが機能しないのか、私にはよくわかりません。ループの任意の部分を実行しようとすると、sqlite3.OperationalError: near "WHERE": 構文エラーが発生します。

    con = sqlite3.connect('DatabaseName.sql')
    cur = con.cursor()

    if changes == "1":
        Fname = input("Enter new first name: ")
        Lname = input("Enter the last name of the person whom first name you wish to change: ")
        cur.execute("""UPDATE Contacts SET Fname WHERE Lname""")
        con.commit()
    elif changes == "2":
        Lname = input("Enter new last name: ")
        Fname = input("Enter the first name of the person whom last name you wish to change: ")
        cur.execute("UPDATE Contacts SET Lname WHERE Fname")
        con.commit()
    elif changes == "3":
        Phone = input("Enter new telephone number(no dashes or spaces): ")
        Fname = input("Enter the first name of the person whom telephone number you wish to change: ")
        Lname = input("Enter the last name of the person whom telephone number you wish to change: ")
        Phone = int(Phone)
        cur.execute("""UPDATE Contacts SET Phone WHERE Fname AND Lname""")
        con.commit()
4

1 に答える 1

3

Python と SQL は完全に独立した 2 つの言語です。一方の変数から他方の変数に直接アクセスすることはできません。

Python 変数の値を SQL コマンドに渡すには、次のようにパラメーターを使用します。

cur.execute("UPDATE Contacts SET FirstName = ? WHERE LastName = ?", (Fname, Lname))

(ここで、FirstNameLastNameはテーブル内の列名であり、Python 変数名と同じである場合と同じでない場合があります。)

于 2012-11-23T16:30:21.450 に答える