return zxJDBC
def _driver_kwargs(self):
- """return kw arg dict to be sent to connect()."""
+ """Return kw arg dict to be sent to connect()."""
return {}
- def create_connect_args(self, url):
- hostname = url.host
- dbname = url.database
- d, u, p, v = ("jdbc:%s://%s/%s" % (self.jdbc_db_name, hostname, dbname),
- url.username, url.password, self.jdbc_driver_name)
- return [[d, u, p, v], self._driver_kwargs()]
+ def _create_jdbc_url(self, url):
+ """Create a JDBC url from a :class:`~sqlalchemy.engine.url.URL`"""
+ return "jdbc:%s://%s/%s" % (self.jdbc_db_name, url.host, url.database)
+ def create_connect_args(self, url):
+ opts = self._driver_kwargs()
+ opts.update(url.query)
+ return [[self._create_jdbc_url(url), url.username, url.password, self.jdbc_driver_name],
+ opts]
+
def is_disconnect(self, e):
if not isinstance(e, self.dbapi.ProgrammingError):
return False
The official MySQL JDBC driver is at
http://dev.mysql.com/downloads/connector/j/.
+Character Sets
+--------------
+
+SQLAlchemy zxjdbc dialects pass unicode straight through to the
+zxjdbc/JDBC layer. To allow multiple character sets to be sent from the
+MySQL Connector/J JDBC driver, by default SQLAlchemy sets its
+``characterEncoding`` connection property to ``UTF-8``. It may be
+overriden via a ``create_engine`` URL parameter.
+
"""
import re
def _driver_kwargs(self):
"""return kw arg dict to be sent to connect()."""
- return dict(CHARSET=self.encoding, yearIsDateType='false')
+ return dict(characterEncoding='UTF-8', yearIsDateType='false')
def _extract_error_code(self, exception):
# e.g.: DBAPIError: (Error) Table 'test.u2' doesn't exist
super(Oracle_jdbc, self).initialize(connection)
self.implicit_returning = False
- def create_connect_args(self, url):
- hostname = url.host
- port = url.port or '1521'
- dbname = url.database
- jdbc_url = 'jdbc:oracle:thin:@%s:%s:%s' % (hostname, port, dbname)
- return [[jdbc_url, url.username, url.password, self.jdbc_driver_name],
- self._driver_kwargs()]
+ def _create_jdbc_url(self, url):
+ return 'jdbc:oracle:thin:@%s:%s:%s' % (url.host, url.port or 1521, url.database)
def _get_server_version_info(self, connection):
version = re.search(r'Release ([\d\.]+)', connection.connection.dbversion).group(1)