首页 > 解决方案 > 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()

预先感谢您的回答!

标签: pythonsqldatabasesqlite

解决方案


我认为由于“年龄”参数,您的选择查询是错误的,这个新查询将起作用。

尝试

cur.execute("SELECT [age] FROM people WHERE surname = 'Mike' OR surname = 'James")

推荐阅读