sqlite3.OperationalError:没有这样的列:键

问题描述

我有一个错误,它是 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()

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

解决方法

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