python - Python-sqlite3:如何在 SELECT 语句中放置一个 python 变量
问题描述
如何在 SELECT 之后放置一个 python 变量。这个想法是创建一个带有三个参数的 python 函数,您可以在其中选择什么(这里是年龄)来自谁(这里是 Mike 和 James)
conn = sqlite3.connect('test.s3db')
cur = conn.cursor()
cur.execute('''DROP TABLE IF EXISTS people''')
cur.execute('''CREATE TABLE IF NOT EXISTS people
(id INTEGER,
name TEXT,
surname TEXT,
age INTEGER,
alone INTEGER DEFAULT 0);''')
def add_people(id, name, surname, age, alone=0):
cur.executemany('INSERT INTO people (id, name, surname, age, alone) VALUES (?,?,?,?,?)', [(id, name, surname, age, alone)])
conn.commit()
add_people(1, 'SMITH','James',45)
add_people(2,'JOHNSON','Mike',75)
cur.execute('''SELECT (?) FROM people WHERE surname = (?) OR surname = (?)''', ('age','Mike', 'James'))
print(cur.fetchall())
我的代码return
:
[('age',), ('age',)]
代替 :
[(75,), (45,)]
编辑:我希望选择的是一个变量,而不是直接写在查询中。我的目标是制作这样的功能:
def query(what, who_1, who_2):
cur.executemany('''SELECT (?) FROM people WHERE surname = (?) OR surname = (?)''', (what, who_1, who_2))
return cur.fetchall()
预先感谢您的回答!
解决方案
我认为由于“年龄”参数,您的选择查询是错误的,这个新查询将起作用。
尝试
cur.execute("SELECT [age] FROM people WHERE surname = 'Mike' OR surname = 'James")
推荐阅读
- r - 使用函数和 for 循环删除不需要的文本
- python - 我们如何解压缩任意嵌套的迭代器、迭代器、[...]、迭代器?
- android - 没有响应提示用户为 SMS 设置默认处理程序的意图
- linux - Git 钩子没有被推送到裸存储库
- python - 在不使用for循环的情况下,用numpy优化python函数
- c - 设置二进制数等于设置掩码的其他二进制数
- c# - load static fields in class
- alfresco - Alfresco Activiti - How to modify process variables?
- sql - 如何将 sql 查询的结果保存到变量中,然后在脚本中使用它?
- html - 水平滑块 CSS 的最佳方法