【问题标题】:sqlite3.OperationalError: no such column: keysqlite3.OperationalError:没有这样的列:键
【发布时间】:2021-01-30 13:25:46
【问题描述】:

我有一个错误,它是sqlite3.OperationalError: no such column: key,但我不知道是什么问题。我尝试将.db 文件名从apiKeys.db 更改为key.db,但仍然引发错误sqlite3.OperationalError: no such column: key。代码是

class Auth:
    conn = sqlite3.connect("key.db")
    c = conn.cursor()
    c.execute("""CREATE TABLE IF NOT EXISTS key (
                key)""")
    def add(key):
        conn = sqlite3.connect("key.db")
        c = conn.cursor()
        with conn:
            c.execute("INSERT INTO key VALUES (key=:key)",
                {'key': key})
        return True
    def get_all():
        conn = sqlite3.connect("key.db")
        c = conn.cursor()
        c.execute("SELECT * FROM key")
        return c.fetchall()
    def check(key):
        conn = sqlite3.connect("key.db")
        c = conn.cursor()
        c.execute("SELECT * FROM key")
        keys = c.fetchall()
        if key in keys:
            return True
        else:
            return False
    def remove(key):
        conn = sqlite3.connect("key.db")
        c = conn.cursor()
        with conn:
            c.execute("DELETE FROM key WHERE (key=:key)",
                {"key": key})
        return True

我加了

conn = sqlite3.connect("key.db")
c = conn.cursor()

到每个函数的开头,因为没有它,它总是会引发错误。

【问题讨论】:

    标签: python-3.x sqlite pysqlite


    【解决方案1】:

    这个INSERT INTO key VALUES (key=:key) 不正确execute syntax。只有占位符应该在 VALUES 子句中,即VALUES (:key)。 (remove 方法也有类似问题)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 2021-01-12
      • 2021-01-27
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多