SQLite создает табличную часть кода, которая не работает

#python #sqlite

#python #sqlite

Вопрос:

Я пытаюсь закодировать калькулятор GPA, где сначала пользователю предоставляется выбор: создать учетную запись (создать таблицу в SQLite для хранения данных) или вставить данные (запросить данные GPA). Однако, каким-то образом, код для создания таблицы, похоже, не работает. Основываясь на приведенном ниже коде, когда я ввожу «создать учетную запись», он должен вернуться в терминал:

Подключено к sqlite успешно Таблица создана успешно

Однако, похоже, этого не происходит, вместо этого он возвращает только «Успешно подключен к sqlite», в чем проблема здесь?

 import sqlite3

query = str(input("What do you want to do? (Create Account,Insert New Data) "))

sqliteConnection = sqlite3.connect("SQLite_Python_Test.db")

cursor = sqliteConnection.cursor()
sqliteConnection.commit()
print("Connected to sqlite Successfully")

if query.lower() == "create table":
    try:
        sqlite_query_create_table = '''CREATE TABLE gpa_calc_users_test(
            id INTEGER PRIMARY KEY UNIQUE,
            username TEXT NOT NULL UNIQUE,
            password TEXT NOT NULL,
            gpa_sem1 REAL,
            gpa_sem2 REAL);'''

        cursor.execute(sqlite_query_create_table)
        sqliteConnection.commit()
        print("Table created Successfully")
        cursor.close()

    except sqlite3.Error as error:
        print("Error while inserting data")

    finally:
        if(sqliteConnection):
            sqliteConnection.close()
            print("SQLite connection closed")
elif query.lower() == "Insert New Data":
    try:
        insert_parameters = (int(input("ID: ")),str(input("Username:     ")),str(input("Password:")),float(input("Semester 1 GPA: ")),float(input("Semester 2 GPA: ")))
        sqlite_query_insert = '''
        INSERT INTO gpa_calc_users_test
            (id,username, password, gpa_sem1, gpa_sem2)
            VALUES
            (?,?,?,?,?)
        '''
        cursor.execute(sqlite_query_insert,insert_parameters)
        sqliteConnection.commit()
        print("Query inserted Successfully")
        cursor.close()

    except sqlite3.Error as error:
        print("Error while inserting data")

    finally:
        if(sqliteConnection):
            sqliteConnection.close()
            print("SQLite connection closed")
  

Комментарии:

1. Не связано: вам не нужно UNIQUE с a PRIMARY KEY — это подразумевается как PK .

2. Спасибо за дополнительную помощь!

Ответ №1:

когда я ввожу «создать учетную запись», она должна вернуться в терминал:

Подключено к sqlite успешно Таблица создана успешно

Неверно. Если вводится «создать таблицу», это будет ожидаемый результат. Но если ввести «создать учетную запись», она подключится к базе данных, отобразит сообщение «подключение успешно» и завершит работу.

И черт возьми, это elif query.lower() == "Insert New Data": никогда не может быть правдой.