def isInitialized(self): try: v = self.execute("select id from node where type='root'") v[0] return True except sqlite.OperationalError: self.createTables() initDatabaseValues(self) except IndexError: initDatabaseValues(self) return False
def __init__(self): self.dbhost = config.get("database.dbhost", "localhost") self.dbport = int(config.get("database.dbport", "3306")) self.database = config.get("database.db", "mediatum") self.user = config.get("database.user", "mediatumadmin") self.passwd = config.get("database.passwd", "") self.db = MySQLdb.connect(host=self.dbhost, port=self.dbport, user=self.user, passwd=self.passwd, db=self.database) self.dblock = thread.allocate_lock() self.nodes = {} function = str(traceback.extract_stack()[-2][0]) + ":" + str(traceback.extract_stack()[-2][2]) log.info("Connecting to [" + self.user + "@" + self.database + "] " + function) # test base table try: r = self.runQuery("select id from node where type='root'") r[0] except MySQLdb.ProgrammingError: self.createTables() initDatabaseValues(self) except IndexError: initDatabaseValues(self) # test for new views try: r = self.runQuery("select nid from containermapping limit 1") r[0] except MySQLdb.ProgrammingError: self.runQueryNoError( "CREATE OR REPLACE VIEW `containermapping` AS select `nodemapping`.`nid` AS `nid`,`nodemapping`.`cid` AS `cid`,`node`.`type` AS `type` from (`nodemapping` join `node` on((`nodemapping`.`cid` = `node`.`id`))) where (locate('/',`node`.`type`) = 0)") self.runQueryNoError( "CREATE OR REPLACE VIEW `contentmapping` AS select `nodemapping`.`nid` AS `nid`,`nodemapping`.`cid` AS `cid`,`node`.`type` AS `type` from (`nodemapping` join `node` on((`nodemapping`.`cid` = `node`.`id`))) where (locate('/',`node`.`type`) > 0)") try: r = self.runQuery("select * from node where dirty=1 limit 1") except MySQLdb.OperationalError: self.runQuery("alter table node add column dirty bool")