我在sqlite3的文件中搜索时遇到问题,我有一个包含以下列的数据库: 标题,艺术家,歌词,跟踪
我的代码就是:
def search(title,artist,query):
if title and artist and query:
db = sqlite3.connect('songs.db')
cursor = db.cursor()
cursor.execute('SELECT ? FROM song WHERE title=? and artist=?',(query,title,artist))
result = cursor.fetchall()
if result:
print result
else:
return False
我已将text_factory设置为str,但它解决了我遇到的另一个问题,我已经使用像sqliteman这样的查看器检查了数据库,并试图通过终端进行搜索,但效果很好。 ¿任何人都可以看到错误吗?
答案 0 :(得分:0)
SQL查询中的参数始终替换为固定值。 换句话说,字符串总是被替换为字符串,而不是列名。
要在查询中自定义列名,您不能使用SQL参数,而是在Python中进行替换:
cursor.execute('SELECT %s FROM song WHERE title = ? AND artist = ?' % (query),
(title, artist))