#python #sql #sql-server #sql-server-2008
#python #sql #sql-сервер #sql-server-2008
Вопрос:
Мне просто нужно прочитать одно значение из соединения 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()
Ответ №1:
Вам необходимо получить результат после выполнения запроса. Смотрите PEP 249 о том, как dbapi предоставляет это.
В вашем случае username = cur.fetchone()[0]
будет работать.
Ответ №2:
Согласно DB-API python, вам нужно выполнить 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()