Я пытаюсь вставить запись в базу данных sqlite, используя именованные параметры в python (с модулем sqlite3). Значения, которые я хочу вставить, находятся в словаре, но ключи словаря могут содержать тире, например {'request-id': 100, 'year': '2015'}
. Я пытаюсь выполнить следующие действия:python sqlite с именем параметр, содержащий dash
import sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS requests (request_id text, year text)''')
query = '''INSERT INTO requests (request_id, year) VALUES (:request-id, :year)'''
cursor.execute(query, {'request-id': 100, 'year': '2015'})
conn.commit()
conn.close()
Я получаю эту ошибку во время оператора вставки:
sqlite3.OperationalError: no such column: id
Похоже, черточки не очень хорошо приняты в качестве именованных параметров.
Существует много обходных решений для этого, например, создание нового словаря, в котором тире в ключах заменяются символами подчеркивания, но я хотел бы знать, могу ли я использовать какую-либо технику экранирования или что-то еще, чтобы избежать этого. не
Спасибо за вашу помощь
Ваш 'столбец names' не совпадают тоже. Это 'date' в' create' и 'year' в' insert'. –
Нет, я думаю, здесь 'id' ссылается на непоследовательное использование' date' при создании таблицы и 'year' после этого. – ZdaR
Извините, это была ошибка вырезания и вставки, фактическая таблица содержит столбец «год». Я отредактировал вопрос соответствующим образом. благодаря – Daniele