Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. import psycopg2
  3. import time
  4.  
  5.  
  6. class DataBase:
  7. def __init__(self, settings):
  8.  
  9. # if 'host' not in settings:
  10. # settings["host"] = 'localhost'
  11. if 'port' not in settings:
  12. settings["port"] = ''
  13. # if 'dbuser' not in settings:
  14. # settings["dbuser"] = 'postgres'
  15. # try:
  16. # self.settings = (
  17. # "dbname='{dbname}' user='{dbuser}' host={host} password='{password}' port = '{port}'").format(
  18. # dbname=settings['dbname'],
  19. # dbuser=settings['dbuser'],
  20. # host=settings['host'],
  21. # password=settings['password'],
  22. # port=settings['port'])
  23. # except KeyError as er:
  24. # print er, "is required parameter"
  25. # exit()
  26.  
  27. self.conn = None
  28. self.cursor = None
  29. # self.connect()
  30. pass
  31.  
  32. def start_transaction(self):
  33. answer = self.conn.autocommit
  34. if self.conn.autocommit:
  35. self.conn.autocommit = False
  36. return answer
  37.  
  38. def end_transaction(self, transaction_started):
  39. if transaction_started:
  40. self.conn.commit()
  41. self.conn.autocommit = True
  42. print 'commit done'
  43.  
  44. def roll_back(self, transaction_started):
  45. if transaction_started:
  46. self.conn.rollback()
  47. self.conn.commit()
  48. self.conn.autocommit = True
  49.  
  50. def connect(self):
  51.  
  52. try:
  53. self.conn = psycopg2.connect(self.settings)
  54. except psycopg2.Error as er:
  55. print er, "\n",
  56. exit()
  57. self.conn.autocommit = True
  58. self.cursor = self.conn.cursor()
  59. pass
  60.  
  61. def disconnect(self):
  62. try:
  63. self.conn.close()
  64. self.conn = None
  65. except psycopg2.Error as er:
  66. print er
  67. exit()
  68. pass
  69.  
  70. def get_info(self, table_name, wonted_data, search=None):
  71. # self.conn.autocommit = True
  72. self.cursor = self.conn.cursor()
  73. values = ""
  74.  
  75. if isinstance(wonted_data, list):
  76. first = True
  77. for data in wonted_data:
  78. if first:
  79. values += data
  80. first = None
  81. else:
  82. values += ',' + data
  83. else:
  84. values += wonted_data
  85.  
  86. sql_request = 'SELECT ' + values + ' FROM ' + str(table_name) + ' WHERE deleted_at = 0'
  87.  
  88. if search is not None:
  89. values = ()
  90. for key in search:
  91. first = True
  92. for val in search[key]:
  93.  
  94. values += (val,)
  95. if first:
  96. sql_request += " and " + key + " IN (%s"
  97. first = None
  98. else:
  99. sql_request += ",%s"
  100. sql_request += ")"
  101.  
  102. try:
  103. # print sql_request
  104. # print (self.cursor.mogrify(sql_request, values).decode('utf8'))
  105. self.cursor.execute(sql_request, values)
  106. return self.cursor.fetchall()
  107. except TypeError as er:
  108. print er
  109. exit()
  110.  
  111. def insert(self, table_name, dic):
  112. # self.conn.autocommit = True
  113. self.cursor = self.conn.cursor()
  114. columns = []
  115. values = ()
  116. for param in dic:
  117. columns.append(param)
  118. values += (dic[param],)
  119. sql_request = "INSERT INTO {table} ({param}) VALUES ({s}) returning id".format(
  120. table=table_name,
  121. param=', '.join(columns),
  122. s=', '.join(["%s"]*len(values)))
  123. # print (self.cursor.mogrify(sql_request, values).decode('utf8'))
  124. self.cursor.execute(sql_request, values)
  125. return self.cursor.fetchone()[0]
  126. pass
  127.  
  128. def update(self, table_name, dic, identifier):
  129. # self.conn.autocommit = True
  130. # self.cursor = self.conn.cursor()
  131. part_of_sql_request = []
  132. values = ()
  133. sql_request = "UPDATE " + table_name + " SET"
  134.  
  135. for column in dic:
  136. part = " " + column + " = %s"
  137. values += (str(dic[column]),)
  138. part_of_sql_request.append(part)
  139. sql_request += ' ,'.join(part_of_sql_request)
  140. sql_request += " WHERE deleted_at = 0 and id IN( "
  141. # del part_of_sql_request[:]
  142. for id in identifier:
  143. sql_request += "%s,"
  144. values += (id,)
  145. # sql_request += ")"
  146. # part_of_sql_request.append(part)
  147. sql_request += ')'
  148. print sql_request
  149. print values
  150. # print (self.cursor.mogrify(sql_request, values).decode('utf8'))
  151.  
  152. try:
  153. self.cursor.execute(sql_request, values)
  154. return self.cursor.fetchone()[0]
  155. except psycopg2.Error as er:
  156. print er
  157. pass
  158.  
  159. def delete(self, table_name, identifiers):
  160.  
  161. delete_data = {
  162. "deleted_at": time.time()
  163. }
  164. return self.update(table_name, delete_data, identifiers)
  165.  
  166. def full_delete(self, table_name, identifiers):
  167. self.conn.autocommit = True
  168. self.cursor = self.conn.cursor()
  169. sql_request = "DELETE FROM {table} where id = %s".format(
  170. table=table_name)
  171. val = ()
  172. val += (identifiers,)
  173. try:
  174. self.cursor.execute(sql_request, val)
  175. return self.cursor.fetchone()[0]
  176. except psycopg2.Error as er:
  177. print er
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement