]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Make access dao detecting more reliable #828
authorPaul Johnston <paj@pajhome.org.uk>
Fri, 26 Oct 2007 18:17:14 +0000 (18:17 +0000)
committerPaul Johnston <paj@pajhome.org.uk>
Fri, 26 Oct 2007 18:17:14 +0000 (18:17 +0000)
CHANGES
lib/sqlalchemy/databases/access.py

diff --git a/CHANGES b/CHANGES
index bbeaf0119d9f754bfbe7619928767daf72195eb0..a403602145cc6ba1002c55660bc0cf133f2125ed 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -25,6 +25,9 @@ CHANGES
 - improved behavior of add_property() etc., fixed [ticket:831] involving
   synonym/deferred
   
+- Made access dao dection more reliable [ticket:828]
+  
+  
 0.4.0
 -----
 
index c6e6107bfa70dc7b1a3f4dc9c5a2f4600f74048c..d57c9fa9f65b3e388e65b8caed041842a8d24932 100644 (file)
@@ -190,13 +190,19 @@ class AccessDialect(default.DefaultDialect):
         self._dtbs = None
 
     def dbapi(cls):
-        import win32com.client
-        win32com.client.gencache.EnsureModule('{00025E01-0000-0000-C000-000000000046}', 0, 5, 0)
+        import win32com.client, pythoncom
 
         global const, daoEngine
         if const is None:
             const = win32com.client.constants
-            daoEngine = win32com.client.Dispatch('DAO.DBEngine.36')
+            for suffix in (".36", ".35", ".30"):
+                try:
+                    daoEngine = win32com.client.gencache.EnsureDispatch("DAO.DBEngine" + suffix)
+                    break
+                except pythoncom.com_error:
+                    pass
+            else:
+                raise exceptions.InvalidRequestError("Can't find a DB engine. Check http://support.microsoft.com/kb/239114 for details.")
 
         import pyodbc as module
         return module