Разрешение «без имени столбца:» для строковых входов в sqlite и python? - PullRequest
0 голосов
/ 24 марта 2019

По сути, я спрашиваю (1), какой столбец пользователь хочет редактировать (ОБНОВЛЕНИЕ) и (2) Какое новое значение он хочет обновить, указанный столбец, какой.Это указывается с WHERE id = x.

Моя проблема в том, что при обновлении значения для этого столбца (скажем, при обновлении «english» с помощью «maths» для столбца «subject») возникает ошибка:

sqlite3.OperationalError: нет такого столбца: математика

В данный момент я распечатываю список параметров для пользователя, из которого они выбирают, какой столбец они хотят обновить.Обратите внимание, что перед этим они указали, какой идентификатор они хотят редактировать, поэтому здесь не стоит беспокоиться.Я попытался создать параметры и все, но моя программа все равно будет возвращаться к «без имени столбца:».Я подозреваю, что это потому, что sqlite не может обрабатывать переменные из Python, но я все еще застрял здесь.

print("[Which information would you like to edit?]")


edit_options = {1: "subject", 2: "education", 3: "years", 4: "nostu", 5: "fptime"}


edit_values = {1: get_one.subject, 2: get_one.education, 3:get_one.years, 4:get_one.nostu, 5:get_one.fptime}

while True:
    try:

        edit_number = int(input("\n>>> "))

        if edit_number < 1:
            print("Please enter a number between 1 and 5")

        elif edit_number > 5:
            print("Please enter a number between 1 and 5")

        else:
            break

    except:

        print("Please enter a number between 1 and 5")


edit_column = edit_options[edit_number]

edit_column_value = edit_values[edit_number]

print('''
Editing {0}
[Current Value]: {1} = {2}'''.format(get_one, edit_column, 
edit_column_value)) #get_one() is simply an instance from another class

edit_input = input("[New Value]: {0} = ".format(edit_column))


cur.execute("UPDATE teachers SET {0} = {1} WHERE id = {2}".format(edit_column, edit_input, index))

smdb.commit()

print("edit succesful")

По сути, я хочу, чтобы пользовательский ввод обновлял определенный столбец, в который введен ранее введенный идентификатор.Любая помощь очень ценится.Я заметил, что при вводе значений INT это работает - просто не работает со строками.

(извините, если мой код не выделен, я не знаю как!).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...