Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import psycopg2, psycopg2.extras
- from community_blog.lib.base import *
- class Database:
- def __init__( self, config, readwrite, log):
- self.items = 0
- if config.has_section("database"):
- self.config = config
- else:
- log.critical("No DB Config Information")
- self.log = log
- self.connect(config, readwrite)
- pass
- # ----------------------------------------------------------------------------------------------
- def connect( self, config, readwrite ):
- if readwrite:
- self.__user = config.get("database", "ruser")
- self.__password = config.get("database", "rpassword")
- self.__server = config.get("database", "rhost")
- self.__database = config.get("database", "rdatabase")
- try:
- self.dbread = psycopg2.connect("host='%s' dbname='%s' user='%s' password='%s'" %(self.__server, self.__database, self.__user, self.__password))
- except Exception, e:
- self.log.info("DBRead Connection Error - " + e)
- self.__user = config.get("database", "wuser")
- self.__password = config.get("database", "wpassword")
- self.__server = config.get("database", "whost")
- self.__database = config.get("database", "wdatabase")
- try:
- self.dbwrite = psycopg2.connect("host='%s' dbname='%s' user='%s' password='%s'" %(self.__server, self.__database, self.__user, self.__password))
- except Exception, e:
- self.log.critical("DBWrite Connection Error")
- try:
- if readwrite:
- self.sqlread = self.dbread.cursor(cursor_factory = psycopg2.extras.DictCursor)
- self.sqlwrite = self.dbwrite.cursor()
- else:
- self.sqlread = self.dbwrite.cursor(cursor_factory = psycopg2.extras.DictCursor)
- self.sqlwrite = self.dbwrite.cursor()
- except Exception, e:
- self.log.critical(e)
- # ----------------------------------------------------------------------------------------------
- def setitems(self, items):
- d = type({"1": "1"})
- if items is not False and type(items) is not type(d):
- self.items = len(items)
- self.itemdict = items
- self.itemkeys = []
- for key in items:
- self.itemkeys.append(key)
- setattr(self, key, items[key])
- else:
- self.log.critical('DBItems: Dictionary not supplied')
- return False
- # ----------------------------------------------------------------------------------------------
- def clear(self):
- for i in self.itemdict:
- delattr(self, i)
- # ----------------------------------------------------------------------------------------------
- def insert(self, table, items = False):
- if items is not False:
- if self.setitems(items) is False:
- return False
- else:
- if self.items == 0:
- self.log.critical("DBInsert: No items selected for insert")
- return False
- v = ""
- k = ""
- if self.items > 0:
- for i in range(self.items):
- v += '%s, '
- for i in self.itemkeys:
- k += "%s, " %(i)
- self.insert = "INSERT INTO %s (%s) VALUES (%s)" %(table, k[:-2], v[:-2])
- sql = self.sqlwite.execute(self.insert, eval(self.getm()))
- self.clear()
- return sql
- # ----------------------------------------------------------------------------------------------
- def update(self, table, items = False, where = False):
- if items is not False:
- if self.setitems(items) is False:
- return False
- else:
- if self.items == 0:
- self.log.critical("DBInsert: No items selected for insert")
- return False
- if where is False:
- self.log.critical("DBUpdate: No where clause specified")
- return False
- v = ""
- k = ""
- if self.items > 0:
- for i in self.itemkeys:
- k += "%s=" % (i)
- k += "%s, "
- self.update = "UPDATE %s %s WHERE %s" %(table, k[:-2], where)
- sql = self.sqlwite.execute(self.update, eval(self.getm()))
- self.clear()
- return sql
- # ----------------------------------------------------------------------------------------------
- def getm(self):
- self.m =""
- for i in self.itemkeys:
- self.m += "t.%s, " %(i)
- return self.m[:-2]
- # ----------------------------------------------------------------------------------------------
- # ----------------------------------------------------------------------------------------------
- # Legacy Support
- # ----------------------------------------------------------------------------------------------
- # ----------------------------------------------------------------------------------------------
- def read(self, query):
- if not query:
- self.log.info("DBRead No Query")
- else:
- try:
- self.sqlread.execute(query)
- if self.sqlread.rowcount > 0:
- return self.sqlread.fetchall()
- else:
- return False
- except:
- self.log.info("No results Returned from Query")
- # ----------------------------------------------------------------------------------------------
- def write( self, query, commit = None ):
- if not query:
- self.log.info("DBWrite No Query")
- else:
- try:
- self.sqlwrite.execute(query)
- if not commit:
- self.commit()
- except Exception, e:
- self.log.critical(e)
- # ----------------------------------------------------------------------------------------------
- def commit( self ):
- self.dbwrite.commit()
- # ----------------------------------------------------------------------------------------------
- def delete( self, table, field, id ):
- if not table:
- self.log.critical("DBDelete: No Table Specified")
- return False
- if not field:
- self.log.critical("DBDelete: No Field Specified")
- return False
- if not id:
- self.log.critical("DBDelete: No ID Specified")
- return False
- sql = "DELETE FROM %s WHERE %s ='%s'" %(table, field, id)
- self.write(sql)
Add Comment
Please, Sign In to add comment