Guest User

Untitled

a guest
Apr 13th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.75 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 clear(self):
  101.  
  102. for i in self.itemdict:
  103.  
  104. delattr(self, i)
  105.  
  106. # ----------------------------------------------------------------------------------------------
  107.  
  108. def insert(self, table, items = False):
  109.  
  110. if items is not False:
  111.  
  112. if self.setitems(items) is False:
  113.  
  114. return False
  115. else:
  116.  
  117. if self.items == 0:
  118.  
  119. self.log.critical("DBInsert: No items selected for insert")
  120.  
  121. return False
  122.  
  123. v = ""
  124. k = ""
  125.  
  126. if self.items > 0:
  127.  
  128. for i in range(self.items):
  129.  
  130. v += '%s, '
  131.  
  132. for i in self.itemkeys:
  133.  
  134. k += "%s, " %(i)
  135.  
  136. self.insert = "INSERT INTO %s (%s) VALUES (%s)" %(table, k[:-2], v[:-2])
  137.  
  138. sql = self.sqlwite.execute(self.insert, eval(self.getm()))
  139.  
  140. self.clear()
  141.  
  142. return sql
  143.  
  144. # ----------------------------------------------------------------------------------------------
  145.  
  146. def update(self, table, items = False, where = False):
  147.  
  148. if items is not False:
  149.  
  150. if self.setitems(items) is False:
  151.  
  152. return False
  153.  
  154. else:
  155.  
  156. if self.items == 0:
  157.  
  158. self.log.critical("DBInsert: No items selected for insert")
  159.  
  160. return False
  161.  
  162. if where is False:
  163.  
  164. self.log.critical("DBUpdate: No where clause specified")
  165.  
  166. return False
  167.  
  168. v = ""
  169. k = ""
  170.  
  171. if self.items > 0:
  172.  
  173.  
  174. for i in self.itemkeys:
  175.  
  176. k += "%s=" % (i)
  177. k += "%s, "
  178.  
  179. self.update = "UPDATE %s %s WHERE %s" %(table, k[:-2], where)
  180.  
  181. sql = self.sqlwite.execute(self.update, eval(self.getm()))
  182.  
  183. self.clear()
  184.  
  185. return sql
  186.  
  187. # ----------------------------------------------------------------------------------------------
  188.  
  189. def getm(self):
  190.  
  191. self.m =""
  192.  
  193. for i in self.itemkeys:
  194.  
  195. self.m += "t.%s, " %(i)
  196.  
  197. return self.m[:-2]
  198.  
  199.  
  200. # ----------------------------------------------------------------------------------------------
  201. # ----------------------------------------------------------------------------------------------
  202. # Legacy Support
  203. # ----------------------------------------------------------------------------------------------
  204. # ----------------------------------------------------------------------------------------------
  205.  
  206.  
  207. def read(self, query):
  208.  
  209. if not query:
  210.  
  211. self.log.info("DBRead No Query")
  212.  
  213. else:
  214. try:
  215. self.sqlread.execute(query)
  216.  
  217. if self.sqlread.rowcount > 0:
  218.  
  219. return self.sqlread.fetchall()
  220.  
  221. else:
  222.  
  223. return False
  224.  
  225. except:
  226.  
  227. self.log.info("No results Returned from Query")
  228.  
  229. # ----------------------------------------------------------------------------------------------
  230.  
  231. def write( self, query, commit = None ):
  232.  
  233. if not query:
  234.  
  235. self.log.info("DBWrite No Query")
  236.  
  237. else:
  238.  
  239. try:
  240.  
  241. self.sqlwrite.execute(query)
  242.  
  243. if not commit:
  244.  
  245. self.commit()
  246.  
  247. except Exception, e:
  248.  
  249. self.log.critical(e)
  250.  
  251. # ----------------------------------------------------------------------------------------------
  252.  
  253. def commit( self ):
  254.  
  255. self.dbwrite.commit()
  256.  
  257.  
  258. # ----------------------------------------------------------------------------------------------
  259.  
  260. def delete( self, table, field, id ):
  261.  
  262. if not table:
  263.  
  264. self.log.critical("DBDelete: No Table Specified")
  265. return False
  266.  
  267. if not field:
  268.  
  269. self.log.critical("DBDelete: No Field Specified")
  270. return False
  271.  
  272. if not id:
  273.  
  274. self.log.critical("DBDelete: No ID Specified")
  275. return False
  276.  
  277. sql = "DELETE FROM %s WHERE %s ='%s'" %(table, field, id)
  278.  
  279. self.write(sql)
Add Comment
Please, Sign In to add comment