这是我尝试过的:
- 通过搜索找到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'和'\'作为字母,这些都是错误印刷的特殊字符
答案 0 :(得分:6)
DSN =仅用于系统或用户DSN。
对于DSN文件,您需要使用FILEDSN = c:\ myDsnFile.dsn
答案 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