python - 对元组中的每个项目执行 SQL 查询

标签 python sql-server

我是 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/

相关文章:

sql-server - 复制整个数据库内容(架构和数据)

sql-server - 验证数据库更改(版本控制)

python - 为什么 Theano 测试会因许多 "KnownFailureTest"而失败?

python - 几乎相同的 Tesseract 图像解析不同

python - Google App Engine 应用程序是否可以交流或控制机器学习模型或任务?

c# - SQL将行转换为没有数据透视表的列

sql-server - 对象的 SELECT 权限被拒绝

sql-server - 仅更新sql server 2000中日期时间的日期部分

python - 如何使用 python 生成带有节点列表的 xml

python - 即使我已经在 Windows CMD 中安装了所需的软件包,为什么还需要在 PyCharm 中重新安装 python 软件包?