python - 在 PyOdbc 中获取表名和列名

标签 python pyodbc

我想从 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.Idt2.Id在输出中。

我想到的一些解决方案(以及为什么我真的不想实现它们):

  1. 重命名查询中的列 - 在我的实际用例中有几十个表,其中一些表有几十行更改太频繁了
  2. 解析我的查询并自动生成我的 SQL 查询(基本上检查表的查询,使用 cursor.tables 函数获取列,然后用一组命名列替换 select *)- 如果我也有会这样做,但这对于测试工具来说似乎有点矫枉过正

有没有更好的方法?任何建议将不胜感激。

最佳答案

PyOdbc 文档提供

# columns in table x
for row in cursor.columns(table='x'):
    print(row.column_name)

www.PyOdbc wiki API文档很有用

关于python - 在 PyOdbc 中获取表名和列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15098747/

相关文章:

python - 使用不均匀长度数组绘制 3D 直方图

python - 为什么我收到 NameError : name 'ActionChains' is not defined?

python - 尝试使用 pyodbc 和 tkinter 将记录插入 SQL Server

python - PyODBC 和 Microsoft Access : Inconsistent results from simple query

python - 在 Python 中将 datetime.date 转换为 UTC 时间戳

python - 如何从 csv 插入到 dynamodb

python - selenium、chromedriver_autoinstaller 和 pyinstaller 在一个文件中

sql-server - 使用 MS ODBC Driver 1.0 for Linux 在 Linux 上使用 pyodbc 重新连接到 SQL Server 数据库时出现段错误

python - Pyodbc 查询字符串引号转义

python - 在写入 pandas 数据框之前在 SqlAlchemy 中设置列​​的顺序