#python-3.x #sqlite
#python-3.x #sqlite
Вопрос:
У меня проблема, которую я не знаю, как решить, я перепробовал много решений, но всегда получаю эту операционную ошибку: near …
def insert_medicine_to_table():
con = sqlite3.connect('med_db3.db')
cur = con.cursor()
table_name = 'medicines'
column_name = "présentation"
value = 'Boîte de 2 seringues pré-remplies'
cur.execute("INSERT INTO medicines {} VALUES (?)".format(column_name), value)
con.commit()
con.close()
sqlite3.OperationalError: near "présentation": syntax error
Цель здесь состоит в том, что либо скрипт, либо python должны распознать поле (имя столбца) и вставить значение в «это» поле, например, следующим образом:
fields = ['présentation', 'princeps', 'distributeur_ou_fabriquant', 'composition', 'famille', 'code_atc', 'ppv', 'prix_hospitalier', 'remboursement', 'base_de_remboursement__ppv', 'nature_du_produit']
values = ['Boîte de 2 seringues pré-remplies', 'Oui', 'SANOFI', 'Héparine', 'Anticoagulant héparinique', 'B01AB01', '43.80', '27.40', 'Oui', '43.80', 'Médicament']
Это одна запись в базе данных. Проблема здесь в том, что другие записи могут иметь или не иметь одно или несколько значений для некоторого поля, а также поля не представлены в том же порядке в других записях.
Он должен распознавать каждое поле в таблице базы данных и вставлять каждое значение в правый столбец.
Ответ №1:
Проблема, вызывающая вашу ошибку, заключается в том, что ваш SQL недействителен. Оператор, который вы пытаетесь выполнить,:
INSERT INTO medicines présentation VALUES (?)
Оператор, который вы хотите выполнить, это:
INSERT INTO medicines ("présentation") VALUES (?)
Что касается вашего большего вопроса, если вы создадите как список столбцов ("présentation")
, так и список маркеров параметров (?)
и создадите запрос, используя их, вы пройдете большую часть пути.
Если поле может иметь несколько значений, предоставленных для каждой «записи» в вашей базе данных, вам может потребоваться изменить дизайн вашей базы данных, чтобы справиться с этим. Вам, по крайней мере, нужно выяснить, как вы хотите справиться с ситуацией, но это будет вопрос для другого вопроса.
Комментарии:
1. Спасибо, чувак, но я решил проблему, заархивировав списки в словарь