【问题标题】:How can I assign the ROWID through a variable in Python?如何通过 Python 中的变量分配 ROWID?
【发布时间】:2017-07-28 22:20:21
【问题描述】:

有没有一种方法可以通过 Python 中的变量分配 SQLite rowid?我正在使用 Tkinters 'get()' 函数来检索条目的内容。

代码如下:

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:/Documents/PYTHON/Login And Pw.py”,第 124 行 c.execute('INSERT INTO Students(rowid) VALUES',(studentidentry.get())) sqlite3.OperationalError:靠近“VALUES”:语法错误

提前致谢。

【问题讨论】:

  • 您在第二个 INSERT 语句中缺少 (?)

标签: python sqlite


【解决方案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'))

【讨论】:

    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 2013-05-22
    相关资源
    最近更新 更多