python - 根据sqlite python中的用户选择更改查询
问题描述
我有一个名为 StudentDB 的 sqlite 数据库,它有 3 列 Roll number、Name、Marks。现在我只想获取用户在 IDE 中选择的列。用户可以选择一列或两列或全部三列。如何使用 Python 相应地更改查询?
我试过了:
import sqlite3
sel={"Roll Number":12}
query = 'select * from StudentDB Where({seq})'.format(seq=','.join(['?']*len(sel))),[i for k,i in sel.items()]
con = sqlite3.connect(database)
cur = con.cursor()
cur.execute(query)
all_data = cur.fetchall()
all_data
我正进入(状态:
operation parameter must be str
解决方案
您应该控制查询的文本。如果要构建参数化查询,where 子句应始终采用WHERE colname=value [AND colname2=...]
或(更好)形式。WHERE colname=? [AND ...]
所以你要:
query = 'select * from StudentDB Where ' + ' AND '.join('"{}"=?'.format(col)
for col in sel.keys())
...
cur.execute(query, tuple(sel.values()))
推荐阅读
- c# - 即使是小文件,Firebase 存储也会缓慢下载
- r - 将世纪添加到 2 位数年份
- jsf - 在 Primefaces 6.1.1 中,有没有一种官方方法可以为两个字段的一个标签显示星号?
- snowflake-task - 基于雪花事件的任务调度而不是基于时间的任务调度
- c# - VideoProperties 设置年份和标题
- javascript - Typescript 中泛型的常见用法是什么?
- python - pygame 和方法更新出错
- c# - ASP.NET Core 中的 IOptonsMonitor.OnChange 和异步侦听器
- c# - SMTP 服务器不支持身份验证。使用带有身份的电子邮件验证时
- javascript - 将用户提供的内容插入到文档中——验证 HTML 字符串、insertAdjacentHTML 和 iframe 的使用?