This is funny to me in light of my last post. I have installed UnixODBC, I installed the gui tool to manage it and then I installed MDBTools to allow me to connect to a JET database. (This is all on my Fedora 12 machine by the way for those just joining us.) The funny part is that the time I spent getting the gui tool was wasted as it wont work with the driver anyway, at least not the way I’ve set it up. Not sure why, not sure that I care. Here is what I did to get it to work. First I checked for the driver ( /usr/lib/libmdbodbc.so.0 in my case ). It was there so I edited /etc/odbcinst.ini and added the following entry.
[MDBToolsODBC] Description = MDB Tools ODBC Driver = /usr/lib/libmdbodbc.so.0 Setup = FileUsage = CPTimeout = CPReuse =
That takes care of telling UnixODBC about the driver. I wonder if there is a file from MDBTools that I can use for the setup part. Not sure, may look into it at some point. The next step was creating a DSN. That involved adding the following lines to /etc/odbc.ini (Which existed but was empty because I hadn’t created any entries yet.)
[lintry] Description = Microsoft Access Try DB Driver = MDBToolsODBC Database = /home/jr.peck/Documents/lintry.mdb Servername = localhost Username = Password = port = 5432
Here is what a connection in Python could look like.
import pyodbc sql = 'Select * from foo' conn = pyodbc.connect('DSN=lintry') cursor = conn.cursor() cursor.execute(sql) rows = cursor.fetchall() for record in rows: print record.FirstName + ' ' + record.LastName cursor.close() conn.close()
In my database the table foo contains three columns and the first two are FirstName and LastName. So anyone messing this will obviously need to change it to match their table name, column names, etc. This last piece of getting things to work on Linux wasn’t really necessary but it didn’t take all that long to figure out and I’m glad I did, in case I do need it down the road. I imagine this would work just the same for any other programming language that could take advantage of UnixODBC.