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
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
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
#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:
def fetchall_dict(self): return [ sqllib.CaselessDict(x) for x in self._cursor.fetchall_dict() ]
def fetchmany_dict(self, size): return [ sqllib.CaselessDict(x) for x in self._cursor.fetchmany_dict(size) ]
def fetchone_dict(self): ret = self._cursor.fetchone_dict() return sqllib.CaselessDict(ret)