source: OpenRLabs-Git/deploy/rlabs-docker/web2py-rlabs/gluon/packages/dal/pydal/adapters/ingres.py

main
Last change on this file was 42bd667, checked in by David Fuertes <dfuertes@…>, 4 years ago

Historial Limpio

  • Property mode set to 100755
File size: 1.8 KB
Line 
1from .base import SQLAdapter
2from . import adapters
3
4
5@adapters.register_for("ingres")
6class Ingres(SQLAdapter):
7    dbengine = "ingres"
8    drivers = ("pyodbc",)
9
10    def _initialize_(self):
11        super(Ingres, self)._initialize_()
12        ruri = self.uri.split("://", 1)[1]
13        connstr = ruri.lstrip()
14        while connstr.startswith("/"):
15            connstr = connstr[1:]
16        if "=" in connstr:
17            # Assume we have a regular ODBC connection string and just use it
18            ruri = connstr
19        else:
20            # Assume only (local) dbname is passed in with OS auth
21            database_name = connstr
22            default_driver_name = "Ingres"
23            vnode = "(local)"
24            ruri = "Driver={%s};Server=%s;Database=%s" % (
25                default_driver_name,
26                vnode,
27                database_name,
28            )
29        self.ruri = ruri
30
31    def connector(self):
32        self.driver.connect(self.ruri, **self.driver_args)
33
34    def create_sequence_and_triggers(self, query, table, **args):
35        # post create table auto inc code (if needed)
36        # modify table to btree for performance....
37        # Older Ingres releases could use rule/trigger like Oracle above.
38        if hasattr(table, "_primarykey"):
39            modify_tbl_sql = "modify %s to btree unique on %s" % (
40                table._rname,
41                ", ".join(["'%s'" % x for x in table.primarykey]),
42            )
43            self.execute(modify_tbl_sql)
44        else:
45            tmp_seqname = "%s_iisq" % table._raw_rname
46            query = query.replace(self.dialect.INGRES_SEQNAME, tmp_seqname)
47            self.execute("create sequence %s" % tmp_seqname)
48            self.execute(query)
49            self.execute("modify %s to btree unique on %s" % (table._rname, "id"))
50
51
52@adapters.register_for("ingresu")
53class IngresUnicode(Ingres):
54    pass
Note: See TracBrowser for help on using the repository browser.