Source code for sqlobject.rdbhost.rdbhostconnection
"""
This module written by David Keeney, 2009, 2010
Released under the LGPL for use with the SQLObject ORM library.
"""
from sqlobject.dbconnection import DBAPI
from sqlobject.postgres.pgconnection import PostgresConnection
[docs]class RdbhostConnection(PostgresConnection):
supportTransactions = False
dbName = 'rdbhost'
schemes = [dbName]
def __init__(self, dsn=None, host=None, port=None, db=None,
user=None, password=None, unicodeCols=False, **kw):
from rdbhdb import rdbhdb as rdb
# monkey patch % escaping into Cursor._execute
old_execute = getattr(rdb.Cursor, '_execute')
setattr(rdb.Cursor, '_old_execute', old_execute)
def _execute(self, query, *args):
assert not any([a for a in args])
query = query.replace('%', '%%')
self._old_execute(query, (), (), ())
setattr(rdb.Cursor, '_execute', _execute)
self.module = rdb
self.user = user
self.host = host
self.port = port
self.db = db
self.password = password
self.dsn_dict = dsn_dict = {}
self.use_dsn = dsn is not None
if host:
dsn_dict["host"] = host
if user:
dsn_dict["role"] = user
if password:
dsn_dict["authcode"] = password
if dsn is None:
dsn = []
if db:
dsn.append('dbname=%s' % db)
if user:
dsn.append('user=%s' % user)
if password:
dsn.append('password=%s' % password)
if host:
dsn.append('host=%s' % host)
if port:
dsn.append('port=%d' % port)
dsn = ' '.join(dsn)
self.dsn = dsn
self.unicodeCols = unicodeCols
self.schema = kw.pop('schema', None)
self.dbEncoding = 'utf-8'
DBAPI.__init__(self, **kw)