【发布时间】:2021-05-29 11:25:48
【问题描述】:
如何在 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()
提前感谢您的回答!
【问题讨论】:
-
如此处所写,
executemany所做的只是execute将和global没有必要。 -
确实,“全局”在这里毫无用处。我知道 execute() 仅适用于一个变量,我必须使用 executemany() 来使用多个变量,但我可能错了。
标签: python sql database sqlite