使用 pyODBC 连接到 ODBC

Posted

技术标签:

【中文标题】使用 pyODBC 连接到 ODBC【英文标题】:Connecting to ODBC using pyODBC 【发布时间】:2015-06-15 15:14:42 【问题描述】:

我已阅读 python odbc 库中的所有常见问题解答页面以及其他示例,并使用以下代码设法连接到 DSN:

cnxn = pyodbc.connect("DSN=DSNNAME")
cursor = cnxn.cursor()
cursor.tables()
rows = cursor.fetchall()
for row in rows:
    print row.table_name

但对于其他一切,我一直收到此错误:

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

我知道我可以通过以下步骤使用 Microsoft Access 提取我的数据:创建一个新数据库,单击外部数据选项卡,单击更多并选择 ODBC 数据库,通过创建一个链接到数据源链接表,在选择数据源窗口中选择机器数据源并选择具有系统类型的 NAME2,按确定并选择表 acr.Table_one_hh,然后选择表中我要查看的字段,例如城市、州、国家、地区等。当我将鼠标悬停在表名上时,它会显示 DSN 名称、描述、可信连接 = 是、APP、数据库名称和表名。

我尝试了两种方法,第一种

cnxn = pyodbc.connect('DRIVER=SQL Server Native Client 10.0;SERVER=mycomputername;DATABASE=mydatabase;Trusted_Connection=yes;')
cursor = cnxn.cursor()

给出错误:

Error: ('08001', '[08001] [Microsoft][SQL Server Native Client 10.0]Named Pipes Provider: Could not open a connection to SQL Server [2].  (2) (SQLDriverConnect); [HYT00] [Microsoft][SQL Server Native Client 10.0]Login timeout expired (0); [08001] [Microsoft][SQL Server Native Client 10.0]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. (2)')

我试过了

cnxn = pyodbc.connect("DSN=DSNNAME, DATABASE=mydatabase")
cursor = cnxn.cursor()
cursor.execute("""SELECT 1 AS "test column1" from acr.Table_one_hh""")
cursor.tables()
rows = cursor.fetchall()
for row in rows:
    print row.table_name

出错了

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

【问题讨论】:

您的最后一个示例不正确,因为连接字符串属性的分隔符是分号 (;),而不是逗号 (,)。试试DSN=DSNNAME;DATABASE=mydatabase 【参考方案1】:

我设法解决了我的问题。我的代码并没有真正改变。

cnxn = pyodbc.connect("DSN=BCTHEAT")
cursor = cnxn.cursor()
cursor.execute("select * from acr.Table_one_hh")
row = cursor.fetchall()

然后我将结果写入 csv 文件。

【讨论】:

以上是关于使用 pyODBC 连接到 ODBC的主要内容,如果未能解决你的问题,请参考以下文章

将 sqlalchemy 连接到 MS Access

使用 django 连接到旧版 informix 数据库

使用 pyodbc 将 Python 连接到 MS SQL Server

将 MySQL 3.23 与 pyodbc 3.07 连接

使用Python通过Windows身份验证连接到MS SQL Server?

如何将 pyodbc 连接到 Access (.mdb) 数据库文件