【发布时间】:2015-03-27 10:57:13
【问题描述】:
我正在尝试使用 python 中的命名参数(使用 sqlite3 模块)将记录插入到 sqlite 数据库中。
我要插入的值在字典中,但字典键可能包含破折号,例如{'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也不匹配。在create中是date,在insert中是year。 -
不,我猜,这里的
id是指创建表时date的使用不一致,之后使用year。 -
对不起,这是一个剪切和粘贴错误,实际表格包含“年份”列。我已经相应地编辑了这个问题。谢谢
标签: python sqlite named-parameters