首页 > 解决方案 > Python sqlite3 sqlite3.OperationalError:没有这样的列:网站即使存在列

问题描述

import sqlite3

database_connection = sqlite3.connect("accounts.db")
database_cursor = database_connection.cursor()


def create_table():
    database_cursor.execute(
        """
        CREATE TABLE IF NOT EXISTS accounts (
        website VARCHAR(50) NOT NULL,
        username VARCHAR(50) NOT NULL,
        email VARCHAR(50) NOT NULL,
        password VARCHAR(50) NOT NULL);
    """
    )


def create_account():
    website = input("\nEnter Website: ")
    username = input("Enter Username: ")
    email = input("Enter Email: ")
    password = input("Enter Password: ")

    database_cursor.execute(
        """
        INSERT INTO accounts ('website', 'username', 'email', 'password')
        VALUES (website, username, email, password)
    """
)


def remove_account():
    pass


def lookup_account():
    pass


def all_accounts():
    database_cursor.execute(
        """
        SELECT * FROM accounts;
    """)

    return database_cursor.fetchall()


create_table()
create_account()
print(all_accounts())

database_connection.commit()
database_connection.close()

证明该列存在

该代码是不整洁的临时代码(抱歉),因为我想让数据库正常工作,但无法弄清楚为什么它会给我这个错误。我对 sqlite3 和 sql 很陌生,所以这可能是一个愚蠢和基本的错误,但我无法让它工作。帮助表示赞赏:)

标签: pythonsqlite

解决方案


对于任何有这个问题的人,我解决了一个解决方案希望它有帮助:)

我变了:

database_cursor.execute(
    """
    INSERT INTO accounts ('website', 'username', 'email', 'password')
    VALUES (website, username, email, password)
"""
)

至:

database_cursor.execute(
    f"""
    INSERT INTO accounts (website, username, email, password)
    VALUES ('{user_website}', '{user_username}', '{user_email}', '{user_password}');
 """
)

推荐阅读