我想从PyOdbc Cursor中检索完全引用的列名。例如,假设我有两个简单的表:
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
。
我想到的一些解决方案(以及为什么我真的不想实现它们):
select *
) - 如果我有我也会这样做,但对于测试工具来说似乎有点过分了有更好的方法吗?任何建议将不胜感激。
答案 0 :(得分:12)
# columns in table x
for row in cursor.columns(table='x'):
print row.column_name
www.PyOdbc wiki API文档很有用
答案 1 :(得分:0)
我是这样做的。
import pyodbc
connection = pyodbc.connect('DSN=vertica_standby', UID='my_user', PWD='my_password', ansi=True)
cursor = connection.cursor()
for row in cursor.columns(table='table_name_in_your_database'):
print row.column_name
您必须通过两个文件设置DSN(数据源名称)。 odbc.ini和odbcinst.ini
答案 2 :(得分:-3)
似乎没有可能做我想做的事情而没有编写相当数量的代码来包装它。其他答案中没有一个实际回答了以相对自动的方式从表中返回不同列名的问题。