2017-07-28 64 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 ℃。執行( 'INSERT INTO學生(ROWID)VALUES',(studentidentry.get())) sqlite3.OperationalError:近 「價值觀」:語法錯誤

在此先感謝。

+1

您在第二個INSERT語句中缺少'(?)'。 – dan04

回答

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'))