How to connect pyodbc to an Access (.mdb) Database file

被刻印的时光 ゝ 提交于 2019-11-26 14:47:45

问题


Here's what I've tried:

-Find Vista's ODBC Data Source Manager* through search,

-Add a new File Data Source*, selecting Driver for Microsoft Access (*.mdb), and selecting my mdb file of interest,

-import pyodbc from python shell and try:

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

I get the following error message (Portuguese**):

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

Which translates as "Data source name not found and no standard driver specified".

What am I doing wrong? How to get it right? Also, I searched the web for documentation but found nothing worth much, could anyone recommend any documentation?

*Names may not be completely accurate because my Windows is in Portuguese.

**No, Portuguese doesn't have '3' and '\' as letters, these are misprinted special characters


回答1:


DSN= is only used for a system or user DSN.

For a DSN File, you need to use FILEDSN=c:\myDsnFile.dsn

http://www.connectionstrings.com/ is your best friend.




回答2:


I had a similar problem with pyodbc although not with Access but a different ODBC driver.

This is what helped me. http://robertoschiabel.wordpress.com/2008/02/28/windows-x64-32bit-odbc-vs-64bit-odbc/ (here is the appropriate KB article in case this URL goes away. http://support.microsoft.com/kb/942976/en-us )

Our previous server hardware died and we had to quickly redeploy on a 64 bit OS because that is all we had that was available. Using the normal ODBC admin tool I added the appropriately named DSN but it still claimed it wasn't found. Only when running the special 32-bit version of the ODBC admin, was I able to define a DSN that my script using pyodbc could find.




回答3:


I use odbc module (included in ActiveState Python), but tested pyodbc and for me works:

#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')

Of course commented connections works too.

I configured nothwind as user DSN so you probably will have to configure your ODBC database connection as User DSN or System DSN, or without configuring in ODBC Administrator you can use ConnectString where you can point at your .mdb file.




回答4:


It's smart to list your odbc connections with pyodbc to see what are you using. Make sure you use appropriate pyodbc 32 bit Python 32 bit driver. If you want to use 64bit access files you should use 64 bit MS Acceess which provides driver.

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


来源:https://stackoverflow.com/questions/3251702/how-to-connect-pyodbc-to-an-access-mdb-database-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!