summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases/access.py
diff options
context:
space:
mode:
authorPaul Johnston <paj@pajhome.org.uk>2007-10-26 18:17:14 +0000
committerPaul Johnston <paj@pajhome.org.uk>2007-10-26 18:17:14 +0000
commitd6568b482966f99e2df0a96d893f7b8e6f639706 (patch)
tree73f70edcbcf2abd6b7e0a89b8cb2c25345ec81ac /lib/sqlalchemy/databases/access.py
parent1e7510645c1a137f7c03bb3bb7345e321b4304af (diff)
downloadsqlalchemy-d6568b482966f99e2df0a96d893f7b8e6f639706.tar.gz
Make access dao detecting more reliable #828
Diffstat (limited to 'lib/sqlalchemy/databases/access.py')
-rw-r--r--lib/sqlalchemy/databases/access.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/sqlalchemy/databases/access.py b/lib/sqlalchemy/databases/access.py
index c6e6107bf..d57c9fa9f 100644
--- a/lib/sqlalchemy/databases/access.py
+++ b/lib/sqlalchemy/databases/access.py
@@ -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