2017-07-28 63 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'))