Я хотел бы получить полностью указанное имя столбца из курсора PyOdbc. Например, скажем, у меня есть 2 простые таблицы:
Table_1(Id, < some other fields >)
Table_2(Id, < some other fields >)
и я хочу получить объединенные данные
select * from Table_1 t1, Table2 t2 where t1.Id = t2.Id
используя pyodbc, например:
query = 'select * from Table_1 t1, Table2 t2 where t1.Id = t2.Id'
import pyodbc
conn_string = '<removed>'
connection = pyodbc.connect(conn_string)
cursor = connection.cursor()cursor.execute(query)
Затем я хочу получить имена столбцов:
for row in cursor.description:
print row[0]
НО, если я сделаю это, я получу Id
дважды, чего я не хочу. В идеале я мог бы получить t1.Id
и t2.Id
на выходе.
Некоторые из решений, о которых я думал (и почему я действительно не хочу их реализовывать):
- переименуйте столбцы в запросе - в моем реальном случае использования есть десятки таблиц, некоторые с десятками строк, которые меняются слишком часто
- проанализируйте мой запрос и автоматизируйте создание моего SQL-запроса (в основном проверяя запрос для таблиц, используя функцию cursor.tables для получения столбцов, а затем заменяя
select *
набором именованных столбцов). Если у меня тоже есть, я сделаю это, но это кажется излишеством для тестового жгута
Есть ли способ лучше? Любой совет будет принят во внимание.
t1.Id
не будет имя выходного столбца в SQL на любой известной мне платформе). Спустя 7 с лишним лет я бы рекомендовал переоценить, действительно ли это то, что вам нужно, или, возможно, вы можете упростить это, просто присвоив каждому столбцу псевдоним, напримерt1_id
, с префиксом псевдонима таблицы. - person bsplosion   schedule 01.05.2020