Python sqlite3 build where part带有动态占位符
我有一个包含4个输入字段的表单,当单击submit按钮时,我将根据这4个输入从数据库中获取结果。我没有强迫用户输入任何输入,因此我可以得到所有空白输入或其中的一部分为空。用户填写的输入越多,数据库的结果就越精确 我的问题是如何仅使用填充的占位符动态构建查询的where部分。这是我的问题。这样,如果其中一个输入为空,查询将不会获取任何内容,而我的意图正好相反:如果输入为空,则在查询数据库时不考虑任何内容Python sqlite3 build where part带有动态占位符,python,sqlite,placeholder,Python,Sqlite,Placeholder,我有一个包含4个输入字段的表单,当单击submit按钮时,我将根据这4个输入从数据库中获取结果。我没有强迫用户输入任何输入,因此我可以得到所有空白输入或其中的一部分为空。用户填写的输入越多,数据库的结果就越精确 我的问题是如何仅使用填充的占位符动态构建查询的where部分。这是我的问题。这样,如果其中一个输入为空,查询将不会获取任何内容,而我的意图正好相反:如果输入为空,则在查询数据库时不考虑任何内容 cursor.execute(''' SELECT name, id, gen
cursor.execute('''
SELECT name, id, gender, age, address, phones, mails, gender, age, hair_color
FROM persons
WHERE
name = ? AND
id = ? AND
gender = ? AND
age = ?
''', (name_input, id_input, gender_input, age_input))
您可以动态创建WHERE子句:
sql = "SELECT ... WHERE 1"
parameters = []
if name_input != "":
sql += " AND name = ?"
parameters += [name_input]
if id_input != "":
sql += " AND id = ?"
parameters += [id_input]
...
或者,重写WHERE子句,以便忽略空值:
选择。。。其中(名称=?1或?1=“”)和(id=?2或?2=“”)以及。。。
()