Example #1
0
 def loadSchema(self):
     assert (self.dbh)
     # keyed by table, values are indexes on the table
     self.tables = sqllib.CaselessDict()
     self.views = sqllib.CaselessDict()
     self.functions = sqllib.CaselessDict()
     self.sequences = sqllib.CaselessDict()
     self.triggers = sqllib.CaselessDict()
     self.version = 0
Example #2
0
class Database(BaseDatabase):
    driver = "postgresql"
    kind = "postgresql"
    alive_check = "select version() as version"
    cursorClass = Cursor
    iterCursorClass = IterCursor
    keywords = KeywordDict()
    basic_transaction = "START TRANSACTION"

    def connect(self, **kwargs):
        assert(self.database)
        cdb = self._connectData()
        if not cdb.get("port", None):
            cdb["port"] = -1
        try:
            self.dbh = pgsql.connect(**cdb)
        except pgsql.DatabaseError, err:
            exc_info = sys.exc_info()
            newerr = sqlerrors.DatabaseError(
                    "Could not connect to database %s: %s" % (cdb, str(err)))
            raise type(newerr), newerr, exc_info[2]

        # reset the tempTables since we just lost them because of the (re)connect
        self.tempTables = sqllib.CaselessDict()
        self.closed = False
        return True
Example #3
0
 def __init__(self, db, encoding=DEFAULT_ENCODING):
     assert (db)
     self.database = db
     self.encoding = encoding
     self.dbh = None
     # stderr needs to be around to print errors. hold a reference
     self.stderr = sys.stderr
     self.closed = True
     self.tempTables = sqllib.CaselessDict()
     self.dbName = None
Example #4
0
        #kwargs.setdefault("command_logfile", open("/tmp/sqlite.log", "a"))
        #kwargs.setdefault("lockJournal", True)
        try:
            self.dbh = sqlite3.connect(self.database, **kwargs)
        except sqlite3.InternalError, e:
            if str(e) == 'database is locked':
                raise sqlerrors.DatabaseLocked(e)
            raise
        except sqlite3.DatabaseError, e:
            raise sqlerrors.DatabaseError(e)
        # add a regexp funtion to enable SELECT FROM bar WHERE bar REGEXP .*
        self.dbh.create_function('regexp', 2, _regexp)
        # add the serialized timestamp function
        self.dbh.create_function("unix_timestamp", 0, _timestamp)
        # reset the tempTables since we just lost them because of the (re)connect
        self.tempTables = sqllib.CaselessDict()
        if self.database in self.VIRTUALS:
            self.inode = (None, None)
            self.closed = False
            return True
        sb = os.stat(self.database)
        self.inode = (sb.st_dev, sb.st_ino)
        self.closed = False
        return True

    def close(self):
        self.inode = (None, None)
        return BaseDatabase.close(self)

    def reopen(self):
        if self.database in self.VIRTUALS:
Example #5
0
 def fetchall_dict(self):
     return [ sqllib.CaselessDict(x) for x in self._cursor.fetchall_dict() ]
Example #6
0
 def fetchmany_dict(self, size):
     return [ sqllib.CaselessDict(x) for x in self._cursor.fetchmany_dict(size) ]
Example #7
0
 def fetchone_dict(self):
     ret = self._cursor.fetchone_dict()
     return sqllib.CaselessDict(ret)