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

為{幸葍}努か 提交于 2019-11-27 09:32:30

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.

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.

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.

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