Guest User

Untitled

a guest
Apr 13th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.55 KB | None | 0 0
  1. import psycopg2, psycopg2.extras
  2.  
  3. #from community_blog.lib.base import *
  4.  
  5. class Database:
  6.  
  7. def __init__( self, config, readwrite, log):
  8.  
  9. self.items = 0
  10.  
  11. if config.has_section("database"):
  12.  
  13. self.config = config
  14.  
  15. else:
  16.  
  17. log.critical("No DB Config Information")
  18.  
  19. self.log = log
  20.  
  21. self.connect(config, readwrite)
  22.  
  23. pass
  24.  
  25. # ----------------------------------------------------------------------------------------------
  26.  
  27. def connect( self, config, readwrite ):
  28.  
  29. if readwrite:
  30. self.__user = config.get("database", "ruser")
  31. self.__password = config.get("database", "rpassword")
  32. self.__server = config.get("database", "rhost")
  33. self.__database = config.get("database", "rdatabase")
  34.  
  35. try:
  36.  
  37. self.dbread = psycopg2.connect("host='%s' dbname='%s' user='%s' password='%s'" %(self.__server, self.__database, self.__user, self.__password))
  38.  
  39. except Exception, e:
  40.  
  41. self.log.info("DBRead Connection Error - " + e)
  42.  
  43. self.__user = config.get("database", "wuser")
  44. self.__password = config.get("database", "wpassword")
  45. self.__server = config.get("database", "whost")
  46. self.__database = config.get("database", "wdatabase")
  47.  
  48. try:
  49.  
  50. self.dbwrite = psycopg2.connect("host='%s' dbname='%s' user='%s' password='%s'" %(self.__server, self.__database, self.__user, self.__password))
  51.  
  52. except Exception, e:
  53.  
  54. self.log.critical("DBWrite Connection Error")
  55.  
  56. try:
  57.  
  58. if readwrite:
  59.  
  60. self.sqlread = self.dbread.cursor(cursor_factory = psycopg2.extras.DictCursor)
  61. self.sqlwrite = self.dbwrite.cursor()
  62.  
  63. else:
  64.  
  65. self.sqlread = self.dbwrite.cursor(cursor_factory = psycopg2.extras.DictCursor)
  66. self.sqlwrite = self.dbwrite.cursor()
  67.  
  68. except Exception, e:
  69.  
  70. self.log.critical(e)
  71.  
  72. # ----------------------------------------------------------------------------------------------
  73.  
  74. def setitems(self, items):
  75.  
  76. d = type({"1": "1"})
  77.  
  78. if items is not False and type(items) is not type(d):
  79.  
  80. self.items = len(items)
  81.  
  82. self.itemdict = items
  83. self.itemkeys = []
  84.  
  85. for key in items:
  86.  
  87.  
  88. self.itemkeys.append(key)
  89.  
  90. setattr(self, key, items[key])
  91.  
  92. else:
  93.  
  94. self.log.critical('DBItems: Dictionary not supplied')
  95.  
  96. return False
  97.  
  98. # ----------------------------------------------------------------------------------------------
  99.  
  100. def insert(self, table, items = False):
  101.  
  102. if items is not False:
  103.  
  104. if self.setitems(items) is False:
  105.  
  106. return False
  107. else:
  108.  
  109. if self.items == 0:
  110.  
  111. self.log.critical("DBInsert: No items selected for insert")
  112.  
  113. return False
  114.  
  115. v = ""
  116. k = ""
  117.  
  118. if self.items > 0:
  119.  
  120. for i in range(self.items):
  121.  
  122. v += '%s, '
  123.  
  124. for i in self.itemkeys:
  125.  
  126. k += "%s, " %(i)
  127.  
  128. self.insert = "INSERT INTO %s (%s) VALUES (%s)" %(table, k[:-2], v[:-2])
  129.  
  130. return self.insert
  131.  
  132. # ----------------------------------------------------------------------------------------------
  133.  
  134. def update(self, table, items = False, where = False):
  135.  
  136. if items is not False:
  137.  
  138. if self.setitems(items) is False:
  139.  
  140. return False
  141.  
  142. else:
  143.  
  144. if self.items == 0:
  145.  
  146. self.log.critical("DBInsert: No items selected for insert")
  147.  
  148. return False
  149.  
  150. v = ""
  151. k = ""
  152.  
  153. if self.items > 0:
  154.  
  155.  
  156. for i in self.itemkeys:
  157.  
  158. k += "%s=" % (i)
  159. k += "%s, "
  160.  
  161. if where is False:
  162.  
  163. self.log.critical("DBUpdate: No where clause specified")
  164.  
  165. return False
  166.  
  167. self.update = "UPDATE %s %s WHERE %s" %(table, k[:-2], where)
  168.  
  169. return self.update
  170.  
  171. # ----------------------------------------------------------------------------------------------
  172.  
  173. def getm(self):
  174.  
  175. self.m =""
  176.  
  177. for i in self.itemkeys:
  178.  
  179. self.m += "t.%s, " %(i)
  180.  
  181. return self.m[:-2]
  182.  
  183.  
  184. # ----------------------------------------------------------------------------------------------
  185. # ----------------------------------------------------------------------------------------------
  186. # Legacy Support
  187. # ----------------------------------------------------------------------------------------------
  188. # ----------------------------------------------------------------------------------------------
  189.  
  190.  
  191. def read(self, query):
  192.  
  193. if not query:
  194.  
  195. self.log.info("DBRead No Query")
  196.  
  197. else:
  198. try:
  199. self.sqlread.execute(query)
  200.  
  201. if self.sqlread.rowcount > 0:
  202.  
  203. return self.sqlread.fetchall()
  204.  
  205. else:
  206.  
  207. return False
  208.  
  209. except:
  210.  
  211. self.log.info("No results Returned from Query")
  212.  
  213. # ----------------------------------------------------------------------------------------------
  214.  
  215. def write( self, query, commit = None ):
  216.  
  217. if not query:
  218.  
  219. self.log.info("DBWrite No Query")
  220.  
  221. else:
  222.  
  223. try:
  224.  
  225. self.sqlwrite.execute(query)
  226.  
  227. if not commit:
  228.  
  229. self.commit()
  230.  
  231. except Exception, e:
  232.  
  233. self.log.critical(e)
  234.  
  235. # ----------------------------------------------------------------------------------------------
  236.  
  237. def commit( self ):
  238.  
  239. self.dbwrite.commit()
  240.  
  241.  
  242. # ----------------------------------------------------------------------------------------------
  243.  
  244. def delete( self, table, field, id ):
  245.  
  246. if not table:
  247.  
  248. self.log.critical("DBDelete: No Table Specified")
  249. return False
  250.  
  251. if not field:
  252.  
  253. self.log.critical("DBDelete: No Field Specified")
  254. return False
  255.  
  256. if not id:
  257.  
  258. self.log.critical("DBDelete: No ID Specified")
  259. return False
  260.  
  261. sql = "DELETE FROM %s WHERE %s ='%s'" %(table, field, id)
  262.  
  263. self.write(sql)
Add Comment
Please, Sign In to add comment