Обработанные запросы в pyodbc возвращают только имя поля - PullRequest
1 голос
/ 16 октября 2019

Когда я запрашиваю свой SQL-сервер с помощью pyodbc, я получаю только имя запрашиваемого поля (вместо самих значений).

import pyodbc

conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
cursor.execute('SELECT ? FROM [Projects]', '[ProjectNo]')
for row in cursor.fetchall():
    print(row)

При этом выводится следующее:

('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )

Количество строк равно количеству строк в таблице проектов. У меня та же проблема, когда вторым аргументом cursor.execute является «[ProjectNo]», «ProjectNo» или даже «blahblahblahblah»;каждая строка дает только имя запрошенного поля.

У меня нет этой проблемы, если я использую только один аргумент в cursor.execute:

cursor.execute('SELECT [ProjectNo] FROM [Projects]')

Это вернет то, что я ожидаю.

Что мне здесь не хватает?

1 Ответ

1 голос
/ 16 октября 2019

Вы можете использовать как это,

import pyodbc

conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
cursor.execute('SELECT {} FROM [Projects]".format('[ProjectNo]'))
for row in cursor.fetchall():
    print(row)
...