在Python中使用参数化查询时获取错误

问题描述:

我在尝试使用类似查询的sqlite3 db使用python时出现以下错误。在Python中使用参数化查询时获取错误

Error:

Request Method: POST 
Request URL: http://127.0.0.1:8000/search/ 
Django Version: 1.11.2 
Exception Type: ProgrammingError 
Exception Value:Incorrect number of bindings supplied. The current statement uses 1, and there are 3 supplied. 

我下面解释我的查询。

rname = request.POST.get('rname') 
keyword = '%' + rname + '%' 
cursor.execute("SELECT * FROM booking_meeting WHERE room_name LIKE ? ",(keyword)) 

在这里,我需要从每个关键字的表中获取值。请帮我解决这个错误。

+0

请停止使用原始的SQL像这样琐碎的查询。 –

尝试:

keyword = '%"' + rname + '"%' 

keyword = '%\'' + rname + '\'%' 

空间在keyword可能导致3个参数的认可。

cursor.execute("SELECT * FROM booking_meeting WHERE room_name LIKE ? ",(keyword))

execute的第二个参数必须是即使只有一个参数的元组:

cursor.execute("SELECT * FROM booking_meeting WHERE room_name LIKE ? ",(keyword,)) 
                      #^