我是Python的新手,我在Win 7-32工作站上安装了Python 3.2.尝试使用adodbapi-2.4.2.2连接到MSSQLServer 2005 Server,这是该软件包的最新更新.
代码/连接字符串如下所示:
conn = adodbapi.connect('Provider = SQLNCLI.1; Integrated Security = SSPI; Persist Security Info = False; Initial Catalog = XXX; Data Source = 123.456.789');
从adodbapi我不断得到错误(这是来自Wing IDE shell的完整错误消息):
回溯(最近一次调用最后一次):文件"D:\ Program Files\Wing IDE 4.0\src\debug\tserver_sandbox.py",第2行,如果名称 ==' main ':文件"D:\ Python32\Lib\site-packages\adodbapi\adodbapi.py",第298行,在connect中引发InterfaceError #Probably COM错误adodbapi.adodbapi.InterfaceError:
我可以跟踪代码并查看异常情况.
我也尝试使用带有OLEDB提供程序的conn字符串和集成的Windows安全性,结果相同.
所有这些连接字符串都可以从我的工作站上的UDL文件和SSMS中正常工作,但在adodbapi中失败并出现相同的错误.
我该如何解决?
假设我查询这样的数据库:
import adodbapi
conn = adodbapi.connect(connStr)
tablename = "[salesLT].[Customer]"
cur = conn.cursor()
sql = "select * from %s" % tablename
cur.execute(sql)
result = cur.fetchall()
Run Code Online (Sandbox Code Playgroud)
我认为,结果是一系列SQLrow对象.
如何获取查询返回的列名列表或序列?
我认为它是这样的:
row = result[0]
for k in row.keys():
print(k)
Run Code Online (Sandbox Code Playgroud)
......但.keys()不是吗.
也不 .columnNames()
sql-server 连接器adodbapi是唯一在我的环境中工作的连接器。
import adodbapi
conn = adodbapi.connect("PROVIDER=SQLOLEDB;Data Source={0};Database={1}; \
UID={2};PWD={3};".format(server,db,user,pwd))
cursor = conn.cursor()
query_list = [row for row in cursor]
type(query_list[0]) = adodbapi.apibase.SQLrow
Run Code Online (Sandbox Code Playgroud)
如何将此列表转换为 pandas df?
谢谢