SP/web2py/gluon/packages/dal/pydal/adapters/ingres.py
Saturneic 064f602b1a Add.
2018-10-25 23:33:13 +08:00

52 lines
1.8 KiB
Python

from .base import SQLAdapter
from . import adapters
@adapters.register_for('ingres')
class Ingres(SQLAdapter):
dbengine = 'ingres'
drivers = ('pyodbc',)
def _initialize_(self, do_connect):
super(Ingres, self)._initialize_(do_connect)
ruri = self.uri.split('://', 1)[1]
connstr = ruri.lstrip()
while connstr.startswith('/'):
connstr = connstr[1:]
if '=' in connstr:
# Assume we have a regular ODBC connection string and just use it
ruri = connstr
else:
# Assume only (local) dbname is passed in with OS auth
database_name = connstr
default_driver_name = 'Ingres'
vnode = '(local)'
ruri = 'Driver={%s};Server=%s;Database=%s' % (
default_driver_name, vnode, database_name)
self.ruri = ruri
def connector(self):
self.driver.connect(self.ruri, **self.driver_args)
def create_sequence_and_triggers(self, query, table, **args):
# post create table auto inc code (if needed)
# modify table to btree for performance....
# Older Ingres releases could use rule/trigger like Oracle above.
if hasattr(table, '_primarykey'):
modify_tbl_sql = 'modify %s to btree unique on %s' % \
(table._rname,
', '.join(["'%s'" % x for x in table.primarykey]))
self.execute(modify_tbl_sql)
else:
tmp_seqname = '%s_iisq' % table._raw_rname
query = query.replace(self.dialect.INGRES_SEQNAME, tmp_seqname)
self.execute('create sequence %s' % tmp_seqname)
self.execute(query)
self.execute(
'modify %s to btree unique on %s' % (table._rname, 'id'))
@adapters.register_for('ingresu')
class IngresUnicode(Ingres):
pass