我有一个数据库,有五个column:项目名称、1月、2月、3月、4月。我会生成一个prj变量以及一个mons变量。prj是一个字符,mons是一个列表,列表里随机出现1月、2月、3月、4月的排列组合。我想查询项目名称为prj,column为mons列表中的所有数据。给我代码,
时间: 2024-03-16 14:45:03 浏览: 53
release-notes-generator:一个基于项目卡的GitHub发行说明生成器
假设你的表名为 `budget_table`,可以使用如下代码查询项目名称为 `prj`,月份在 `mons` 列表中的所有数据:
```python
import sqlite3
# 连接到数据库
conn = sqlite3.connect('your_database.db')
# 生成测试数据
prj = 'project1'
mons = ['1月', '2月', '4月']
# 构造 SQL 语句
sql = 'SELECT * FROM budget_table WHERE 项目名称=? AND ({})'.format(' OR '.join(['{}=?'.format(m) for m in mons]))
# 执行 SQL 语句
cursor = conn.cursor()
cursor.execute(sql, [prj] + mons)
results = cursor.fetchall()
# 打印查询结果
for row in results:
print(row)
# 关闭数据库连接
conn.close()
```
其中,`{}` 中的代码会根据 `mons` 中的元素数量动态生成 `OR` 条件,例如当 `mons` 为 `['1月', '2月', '4月']` 时,生成的 SQL 语句为:
```sql
SELECT * FROM budget_table WHERE 项目名称=? AND 1月=? OR 2月=? OR 4月=?
```
然后,使用 `cursor.execute(sql, [prj] + mons)` 执行 SQL 语句,并将查询结果存储在 `results` 中。最后,遍历 `results` 并打印查询结果即可。
阅读全文