#python #sqlite #python-3.x
#python #sqlite #python-3.x
Вопрос:
Когда я пытаюсь запустить программу, она выдает ошибку
Traceback (most recent call last):
File "G:documentsGCSEComputingPython FilesDatabasesDatabase 1.py", line 15, in <module>
cursor.execute('''INSERT INTO Orders VALUES (first_name,last_name,number,date,order_value)''')
sqlite3.OperationalError: no such column: first_name
Код выглядит следующим образом, любая помощь, которая может быть предоставлена, была бы оценена;D
cursor.execute('''CREATE TABLE Orders4 (customer_first_name text,customer_second_name text,order_number text,order_date date,order_contents text)''')
first_name = input("What is the customer's first name: ")
last_name = input("What is the customer's last name: ")
number = input("What is the order number: ")
order_value = input("What is the order: ")
date = time.strftime("%d/%m/%Y")
cursor.execute('''INSERT INTO Orders VALUES(first_name,last_name,number,date,order_value)''')
Комментарии:
1. Вы вызываете таблицу
Orders4
при ее создании, затем пытаетесь ссылаться на нее какOrders
Ответ №1:
Как упоминалось в комментариях, в ваших SQL-операторах есть опечатка (Orders против Orders4).
Реальная проблема, однако, заключается в строке, в которой вы определяете свою INSERT
команду (последняя строка). Если вы хотите, чтобы переменные first_name
, last_name
и т.д. Были оценены (т. Е. Их фактические значения, заканчивающиеся в строке), вы должны отформатировать строку соответствующим образом. В настоящее время они представляют собой простые строки.
Когда база данных выполняет INSERT
команду, она видит слово first_name
и оценивает его как ссылку на столбец «first_name», который не существует.
Если бы вы заключили переменные в кавычки следующим образом
cursor.execute('''INSERT INTO Orders VALUES("first_name","last_name","number","date","order_value")''')
команда сработала бы, но в итоге вы получили бы фактические слова «first_name» в строке вашей базы данных.
Прочитайте о форматировании строки по ссылке выше и попробуйте следующее
cursor.execute('''INSERT INTO Orders VALUES({fn},{ln},{nr},{dt},{ov})'''.format(fn=first_name,ln=last_name,nr=number,dt=date,ov=over_value))
привет, Денис