source: OpenRLabs-Git/deploy/rlabs-docker/web2py-rlabs/gluon/packages/dal/pydal/adapters/db2.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: 2.0 KB
Line 
1from .._compat import integer_types, long
2from .base import SQLAdapter
3from . import adapters, with_connection_or_raise
4
5
6class DB2(SQLAdapter):
7    dbengine = "db2"
8
9    def _initialize_(self):
10        super(DB2, self)._initialize_()
11        self.ruri = self.uri.split("://", 1)[1]
12
13    @with_connection_or_raise
14    def execute(self, *args, **kwargs):
15        command = self.filter_sql_command(args[0])
16        if command[-1:] == ";":
17            command = command[:-1]
18        handlers = self._build_handlers_for_execution()
19        for handler in handlers:
20            handler.before_execute(command)
21        if kwargs.get("placeholders"):
22            args.append(kwargs["placeholders"])
23            del kwargs["placeholders"]
24        rv = self.cursor.execute(command, *args[1:], **kwargs)
25        for handler in handlers:
26            handler.after_execute(command)
27        return rv
28
29    def lastrowid(self, table):
30        self.execute(
31            "SELECT DISTINCT IDENTITY_VAL_LOCAL() FROM %s;" % table._rname
32            if table._rname
33            else table
34        )
35        return long(self.cursor.fetchone()[0])
36
37    def rowslice(self, rows, minimum=0, maximum=None):
38        if maximum is None:
39            return rows[minimum:]
40        return rows[minimum:maximum]
41
42    def test_connection(self):
43        self.execute("select * from sysibm.sysdummy1")
44
45
46@adapters.register_for("db2:ibm_db_dbi")
47class DB2IBM(DB2):
48    drivers = ("ibm_db_dbi",)
49
50    def connector(self):
51        uriparts = self.ruri.split(";")
52        cnxn = {}
53        for var in uriparts:
54            v = var.split("=")
55            cnxn[v[0].lower()] = v[1]
56        return self.driver.connect(
57            cnxn["dsn"], cnxn["uid"], cnxn["pwd"], **self.driver_args
58        )
59
60
61@adapters.register_for("db2:pyodbc")
62class DB2Pyodbc(DB2):
63    drivers = ("pyodbc",)
64
65    def connector(self):
66        conn = self.driver.connect(self.ruri, **self.driver_args)
67        conn.setencoding(encoding="utf-8")
68        return conn
Note: See TracBrowser for help on using the repository browser.