小编典典

使用pyodbc从SQL检索数据

python

我正在尝试使用pyodbc从SQL
Server检索数据,并使用Python将其打印在表中。但是,我似乎只能检索列名和数据类型之类的东西,而不能检索列每一行中的实际数据值。

基本上,我试图复制一个检索服务器数据并将其显示在表格中的Excel工作表。我连接到服务器没有任何问题,只是我似乎无法找到表中的实际数据。

这是我的代码的示例:

import pyodbc
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=SQLSRV01;DATABASE=DATABASE;UID=USER;PWD=PASSWORD')
cursor = cnxn.cursor()

cursor.execute("SELECT * FROM sys.tables")
tables = cursor.fetchall()
#cursor.execute("SELECT WORK_ORDER.TYPE,WORK_ORDER.STATUS, WORK_ORDER.BASE_ID, WORK_ORDER.LOT_ID FROM WORK_ORDER")

for row in cursor.columns(table='WORK_ORDER'):
    print row.column_name
    for field in row:
        print field

但是,这样做的结果只是给我一些诸如表名,列名以及一些整数和“ None”之类的东西,而这些东西对我来说却并不重要:

STATUS_EFF_DATE
DATABASE
dbo
WORK_ORDER
STATUS_EFF_DATE
93
datetime
23
16
3
None
0
None
None
9
3
None
80
NO
61

因此,我不太确定在哪里可以获取填满表的值。它应该在table =’WORK_ORDER’中,但是可以在其他表名下吗?有没有一种方法可以打印我丢失的数据?

任何意见或建议,将不胜感激。


阅读 220

收藏
2020-12-20

共1个答案

小编典典

你好亲密!

import pyodbc
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=SQLSRV01;DATABASE=DATABASE;UID=USER;PWD=PASSWORD')
cursor = cnxn.cursor()

cursor.execute("SELECT WORK_ORDER.TYPE,WORK_ORDER.STATUS, WORK_ORDER.BASE_ID, WORK_ORDER.LOT_ID FROM WORK_ORDER")
for row in cursor.fetchall():
    print row

(“ columns()”函数收集有关命名表中列的元数据,而不是实际数据)。

2020-12-20