Python脚本从MS SQL Server 2008读取单个值

1 投票
2 回答
1570 浏览
提问于 2025-04-18 11:37

我只需要从一个MS SQL Server 2008的连接中读取一个单一的值,但我不太确定该怎么做。下面是代码

import pyodbc



querystring = """SELECT USER_NAME
FROM sem6.sem_computer, [sem6].[V_SEM_COMPUTER], sem6.IDENTITY_MAP, sem6.SEM_CLIENT
WHERE [sem6].[V_SEM_COMPUTER].COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID
AND sem6.SEM_CLIENT.GROUP_ID = IDENTITY_MAP.ID
AND sem6.SEM_CLIENT.COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID
AND [IP_ADDR1_TEXT] = '10.10.10.10'
"""

con = pyodbc.connect('DRIVER={SQL Server};SERVER=10.10.10.100;DATABASE=databasename;UID=username;PWD=password')
cur = con.cursor()
cur.execute(querystring)
con.commit()
con.close()

2 个回答

3

根据Python的数据库API,你需要使用fetchone来获取第一行数据:

import pyodbc



querystring = """SELECT USER_NAME
FROM sem6.sem_computer, [sem6].[V_SEM_COMPUTER], sem6.IDENTITY_MAP, sem6.SEM_CLIENT
WHERE [sem6].[V_SEM_COMPUTER].COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID
AND sem6.SEM_CLIENT.GROUP_ID = IDENTITY_MAP.ID
AND sem6.SEM_CLIENT.COMPUTER_ID = SEM_COMPUTER.COMPUTER_ID
AND [IP_ADDR1_TEXT] = '10.10.10.10'
"""

con = pyodbc.connect('DRIVER={SQL Server};SERVER=10.10.10.100;DATABASE=databasename;UID=username;PWD=password')
cur = con.cursor()
cur.execute(querystring)
row = cur.fetchone()
print(row[0])
con.close()
3

你需要在执行完查询后获取结果。可以查看PEP 249,了解数据库接口是怎么提供这个功能的。

在你的情况下,username = cur.fetchone()[0] 这个代码可以正常使用。

撰写回答