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

时间:2010-07-15 00:51:15

标签: database ms-access windows-vista odbc pyodbc

这是我尝试过的:

- 通过搜索找到Vista的ODBC数据源管理器,

- 添加新的文件数据源*,选择Microsoft Access驱动程序(* .mdb),然后选择我感兴趣的mdb文件,

- 从python shell导入pyodbc并尝试:

pyodbc.connect("DSN=<that Data Source I just created>")

我收到以下错误消息(葡萄牙语**):

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Nome da fonte de dados n\xe3o encontrado e nenhum driver padr\xe3o especificado (0) (SQLDriverConnectW)') 

其翻译为“未找到数据源名称且未指定标准驱动程序”。

我做错了什么? 怎么做对吗? 此外,我在网上搜索了文档,但发现没有什么值得的,有人可以推荐任何文档吗?

*名称可能不完全准确,因为我的Windows是葡萄牙语。

**不,葡萄牙语没有'3'和'\'作为字母,这些都是错误印刷的特殊字符

4 个答案:

答案 0 :(得分:6)

DSN =仅用于系统或用户DSN。

对于DSN文件,您需要使用FILEDSN = c:\ myDsnFile.dsn

http://www.connectionstrings.com/是你最好的朋友。

答案 1 :(得分:2)

我遇到了与pyodbc类似的问题,尽管不是使用Access而是使用不同的ODBC驱动程序。

这对我有所帮助。 http://robertoschiabel.wordpress.com/2008/02/28/windows-x64-32bit-odbc-vs-64bit-odbc/ (如果此URL消失,这里是相应的知识库文章。http://support.microsoft.com/kb/942976/en-us

我们之前的服务器硬件已经死亡,我们不得不在64位操作系统上快速重新部署,因为这就是我们所拥有的所有硬件。使用普通的ODBC管理工具,我添加了适当命名的DSN,但仍然声称它没有找到。只有在运行特殊的32位版本的ODBC管理员时,才能定义我的脚本使用pyodbc可以找到的DSN。

答案 2 :(得分:1)

我使用odbc模块(包含在ActiveState Python中),但测试pyodbc并且对我有效:

#db = odbc.odbc('northwind')
#db = odbc.odbc('Driver={Microsoft Access Driver (*.mdb)};Dbq=Nwind.mdb;Uid=;Pwd=;')
#db = pyodbc.connect('Driver={Microsoft Access Driver (*.mdb)};Dbq=Nwind.mdb;Uid=;Pwd=;')
db = pyodbc.connect('DSN=northwind')

当然评论的连接也有效。

我将nothwind配置为用户DSN,因此您可能必须将ODBC数据库连接配置为用户DSN或系统DSN,或者不在ODBC管理员中进行配置,您可以使用ConnectString,您可以指向{{1文件。

答案 3 :(得分:1)

明智地列出你与ododbc的odbc连接,看看你在用什么。确保使用适当的pyodbc 32位Python 32位驱动程序。如果要使用64位访问文件,则应使用提供驱动程序的64位MS Acceess。

sources = pyodbc.dataSources()
keys = sources.keys()
for key in keys: 
   print key