# 构建参数化查询语句 query = "SELECT * FROM 匯總 WHERE " conditions = [] parameters = [] # 根据查询条件构建查询语句和参数列表 if date: conditions.append("點檢日期 LIKE ?") parameters.append(f"%{date}%") if name: conditions.append("點檢綫別 LIKE ?") parameters.append(f"%{name}%") if name1: conditions.append("點檢表名稱 LIKE ?") parameters.append(f"%{name1}%") if name2: conditions.append("點檢班別 LIKE ?") parameters.append(f"%{name2}%") # 拼接查询语句和参数列表 query += " OR ".join(conditions) # 执行参数化查询 cursor.execute(query, parameters) rows = cursor.fetchall()修改這段代碼根據查詢時滿足第一個條件后再滿足第2,再第3,第4個條件,如果是空就跳過這個條件
时间: 2024-02-14 09:28:35 浏览: 65
参数化查询为什么能够防止SQL注入
要根据满足第一个条件后再满足第二、第三和第四个条件进行查询,并在条件为空时跳过该条件,您可以按照以下方式修改代码:
```python
# 构建参数化查询语句
query = "SELECT * FROM 匯總 WHERE "
conditions = []
parameters = []
# 根据查询条件构建查询语句和参数列表
if date:
conditions.append("點檢日期 LIKE ?")
parameters.append(f"%{date}%")
if name:
conditions.append("點檢綫別 LIKE ?")
parameters.append(f"%{name}%")
if name1:
conditions.append("點檢表名稱 LIKE ?")
parameters.append(f"%{name1}%")
if name2:
conditions.append("點檢班別 LIKE ?")
parameters.append(f"%{name2}%")
# 拼接查询语句和参数列表
if conditions:
query += conditions[0] # 添加第一个条件
# 添加后续条件
for condition in conditions[1:]:
query += " AND " + condition
# 执行参数化查询
cursor.execute(query, parameters)
rows = cursor.fetchall()
```
这样修改后,查询语句将根据满足条件的顺序进行拼接,并且在条件为空时会跳过该条件。同时,使用了`AND`连接多个条件,确保满足所有条件。
阅读全文