我是 Python 新手,希望有人能帮助我弄清楚如何使用 Python 对元组中的每个项目执行 SQL 查询。
我有一个 SQL Express 服务器,其中包含用于徽章读取器系统的多个数据库。我想做的是将已扫描到特定阅读器的用户 ID 拉出,然后使用这些 ID 获取实际的用户名。
目前,我可以运行提取用户 ID 的查询,并仅使用一个 ID 在另一个表上运行查询。我们想要做的,并且似乎遇到了一个问题,就是对从第一个查询创建的元组中的每个用户 ID 运行第二个查询。下面是我当前使用的两个函数的代码。
def get_id():
global cardholder
global cur
cur.execute("SELECT user_id FROM db.table WHERE badgereaderid = 'badgereader1'")
cardholder = []
rows = cur.fetchall()
for row in rows:
if row == None:
break
cardholder.append(row[0])
print(cardholder)
def get_name():
global cardholder
global user
global cur
cur.execute("SELECT FirstName, LastName FROM db.table WHERE user_id= '%s'" % cardholder)
while 1:
row = cur.fetchone()
if row == None:
break
user = row[0] + row[1]
最佳答案
两种可能的选择
Python 中的重复查询
for user_id in cardholder:
cur.execute("SELECT FirstName, LastName FROM db.table WHERE user_id= '%s'" % user_id)
但是为什么不直接提取第一个查询中的所有数据呢?
cur.execute("SELECT a.user_id, b.FirstName, b.LastName FROM db.table1 a left join bd.table2 b on a.user_id = b.user_id WHERE a.badgereaderid = 'badgereader1'")
或者,使用三引号允许多行字符串并使 SQL 命令更易于理解
cur.execute("""SELECT
a.user_id,
b.FirstName,
b.LastName
FROM db.table1 a
left join db.table2 b
on a.user_id = b.user_id
WHERE a.badgereaderid = 'badgereader1'""")
关于python - 对元组中的每个项目执行 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42231933/