Я пытаюсь вставить запись в базу данных sqlite, используя именованные параметры в python (с модулем sqlite3). Значения, которые я хочу вставить, находятся в словаре, но ключи словаря могут содержать дефисы, например {'request-id': 100, 'year': '2015'}
. Я пытаюсь выполнить следующее:
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
Похоже, тире не очень хорошо воспринимаются в качестве именованных параметров.
Для этого есть много обходных путей, например создание нового словаря, в котором тире в ключах заменяются символами подчеркивания, но я хотел бы знать, могу ли я использовать какую-либо технику экранирования или что-то еще, чтобы избежать этого.
Спасибо за вашу помощь
column names
тоже не совпадают. Этоdate
вcreate
иyear
вinsert
. - person Prerak Sola   schedule 28.01.2015id
здесь относится к непоследовательному использованиюdate
при создании таблицы иyear
после этого. - person ZdaR   schedule 28.01.2015