pool.manage(dbapi).connect() so that serialization
of args is not necessary.
+ - The entry point resolution supported by
+ create_engine() now supports resolution of
+ individual DBAPI drivers on top of a built-in
+ or entry point-resolved dialect, using the
+ standard '+' notation - it's converted to
+ a '.' before being resolved as an entry
+ point. [ticket:2286]
+
- types
- Extra keyword arguments to the base Float
type beyond "precision" and "asdecimal" are ignored;
module = __import__('sqlalchemy.dialects.%s' % (dialect, )).dialects
module = getattr(module, dialect)
- module = getattr(module, driver)
+ if hasattr(module, driver):
+ module = getattr(module, driver)
+ else:
+ module = self._load_entry_point()
+ if module is None:
+ raise exc.ArgumentError(
+ "Could not determine dialect for '%s'." %
+ self.drivername)
return module.dialect
except ImportError:
return None
for res in pkg_resources.iter_entry_points('sqlalchemy.dialects'):
- if res.name == self.drivername:
+ if res.name == self.drivername.replace("+", "."):
return res.load()
else:
return None