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

时间:2017-07-08 11:05:38

标签: python django sqlite

尝试使用python对sqlite3 db进行类似查询时遇到以下错误。

  

错误:

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))

这里我需要根据关键字从表中获取值。请帮我解决这个错误。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:-1)

尝试:

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

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

keyword中的空格可能会导致识别出3个参数。