2017-07-28 14 views
0

Pythonで変数を使ってSQLiteのROWIDを割り当てる方法はありますか?私はTkinters 'get()'のエントリの内容を取得する関数を使用しています。ここPythonで変数を使ってROWIDを割り当てる方法はありますか?

コードである:ここ

def insertdata(): 
    c.execute("INSERT INTO Students VALUES (?, ?, ?, ?, ?, ?, ?, ?);", (surnamelabelentry.get(), forenamelabelentry.get(), dateofbirthlabelentry.get(), homeaddresslabelentry.get(), homephonenumberentry.get(), genderlabelentry.get(), tutorgrouplabelentry.get(), emaillabelentry.get())) 
    c.execute('INSERT INTO Students(rowid) VALUES',(studentidentry.get())) 
    conn.commit() 
    rootE.destroy() 

にエラーがある:

ファイル "R:/ドキュメント/ PYTHON /ログインおよびPw.py"、ライン124、insertdata Cで。事前に構文エラー

ありがとう: "VALUES" 近く:( 'INSERT INTO学生(ROWID)VALUES'、(studentidentry.get())) sqlite3.OperationalErrorを実行します。

+1

2番目の 'INSERT'文に'(?) 'がありません。 – dan04

答えて

1

テーブルを作成するときは、1つの列をINTEGER PRIMARY KEYと宣言します。

CREATE TABLE Students (
    StudentID INTEGER PRIMARY KEY, 
    Surname VARCHAR NOT NULL, 
    Forename VARCHAR NOT NULL, 
    ... 
); 

は、これは、その列ROWIDのエイリアスを作成し、あなたはそれを設定するために、通常のINSERTステートメントを使用することができます。

いくつかの奇妙な理由で、ROWIDを非表示の列として保持するが、明示的な値を設定したい場合は、INSERTの明示的な列リストを使用できます。

c.execute("INSERT INTO Students(ROWID, Surname, Forename) VALUES (?, ?, ?)", (5678, 'Tables', 'Robert')) 
関連する問題