# 获取所有查询条件 date = self.date_entry.get() name = self.line_entry1.get() name1 = self.line_entry2.get() name2 = self.line_entry3.get() # 连接到 SQLite 数据库文件,并创建游标对象 cursor() conn = sqlite3.connect(output_path2) cursor = conn.cursor() # 使用 self.confirm_person 和其他列值作为查询参数,并进行模糊匹配 cursor.execute( f"SELECT * FROM 匯總 WHERE 點檢日期 LIKE '%{date}%' OR 點檢綫別 LIKE '%{name}%' OR 點檢表名稱 LIKE '%{name1}%' OR 點檢班別 LIKE '%{name2}%'") rows = cursor.fetchall()修改這段代碼將獲取的内容作爲查詢條件,在sqlite3中選擇相應内容
时间: 2024-04-12 13:31:13 浏览: 86
要将获取的内容作为查询条件,并在SQLite中选择相应的内容,你可以使用参数化查询来避免SQL注入的风险。
以下是修改后的代码示例:
```python
# 获取所有查询条件
date = self.date_entry.get()
name = self.line_entry1.get()
name1 = self.line_entry2.get()
name2 = self.line_entry3.get()
# 连接到 SQLite 数据库文件,并创建游标对象 cursor()
conn = sqlite3.connect(output_path2)
cursor = conn.cursor()
# 构建参数化查询语句
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()
```
在这个示例中,我们首先构建了一个空的查询语句和参数列表。然后,根据查询条件逐个判断是否存在,并将条件和参数添加到对应的列表中。最后,使用字符串拼接将条件连接起来,并执行参数化查询。
请注意,在构建查询语句时,我们使用了占位符`?`来代替参数的值,然后在执行查询时将具体的参数值传递给`execute`方法。
请确保在代码中正确替换列名和表名,并根据你的实际需求进行修改。同时,也要确保数据库连接已经建立,cursor对象已正确初始化。
希望这可以帮助到你。如果你还有其他问题,请随时提问。
阅读全文