Advertisement
Guest User

Untitled

a guest
Feb 9th, 2016
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.86 KB | None | 0 0
  1. import mysql
  2.  
  3.  
  4. __author__ = 'Alejandro'
  5. import mysql.connector
  6. from mysql.connector import errorcode
  7.  
  8. class Mysql(object):
  9. __instance = None
  10.  
  11. __host = None
  12. __user = None
  13. __password = None
  14. __database = None
  15.  
  16. __session = None
  17. __connection = None
  18.  
  19. def __new__(cls, *args, **kwargs):
  20. if not cls.__instance:
  21. cls.__instance = super(Mysql, cls).__new__(cls, *args, **kwargs)
  22. return cls.__instance
  23.  
  24. def __init__(self, host='localhost', user='root', password='', database=''):
  25. self.__host = host
  26. self.__user = user
  27. self.__password = password
  28. self.__database = database
  29.  
  30. #Open connection with database
  31. def _open(self):
  32. try:
  33. cnx = mysql.connector.connect(host=self.__host, user=self.__user, password=self.__password,
  34. database=self.__database)
  35. self.__connection = cnx
  36. self.__session = cnx.cursor()
  37. except mysql.connector.Error as err:
  38. if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
  39. print 'Something is wrong with your user name or password'
  40. elif err.errno == errorcode.ER_BAD_DB_ERROR:
  41. print 'Database does not exists'
  42. else:
  43. print err
  44.  
  45. def _close(self):
  46. self.__session.close()
  47. self.__connection.close()
  48.  
  49. def insert(self, table, *args, **kwargs):
  50. values = None
  51. query = "INSERT INTO %s " % table
  52. if kwargs:
  53. keys = kwargs.keys()
  54. values = kwargs.values()
  55. query += "(" + ",".join(["`%s`"]*len(keys)) % tuple(keys) + ") VALUES(" + ",".join(["%s"]*len(values)) + ")"
  56. elif args:
  57. values = args
  58. query += " VALUES(" + ",".join(["%s"]*len(values)) + ")"
  59. self._open()
  60. self.__session.execute(query, values)
  61. self.__connection.commit()
  62. self._close()
  63. return self.__session.lastrowid
  64.  
  65. def select(self, table, where=None, *args):
  66. result = None
  67. query = "SELECT "
  68. keys = args
  69. l = len(keys) - 1
  70. for i, key in enumerate(keys):
  71. query += "`"+key+"`"
  72. if i < l:
  73. query += ","
  74. query += " FROM %s" % table
  75. if where:
  76. query += " WHERE %" % where
  77. self._open()
  78. self.__session.execute(query)
  79. self.__connection.commit()
  80. for result in self.__session.stored_results():
  81. result = result.fetchall()
  82. self._close()
  83. return result
  84.  
  85. def update(self, table, index, **kwargs):
  86. query = "UPDATE %s SET" % table
  87. keys = kwargs.keys()
  88. values = kwargs.values()
  89. l = len(keys) - 1
  90. for i, key in enumerate(keys):
  91. query += "`"+key+"`=%s"
  92. if i < l:
  93. query += ","
  94. query += " WHERE index=%d" % index
  95. self._open()
  96. self.__session.execute(query, values)
  97. self.__connection.commit()
  98. self._close()
  99.  
  100. def delete(self, table, index):
  101. query = "DELETE FROM %s WHERE uuid=%d" % (table, index)
  102. self._open()
  103. self.__session.execute(query)
  104. self.__connection.commit()
  105. self._close()
  106.  
  107. def call_store_procedure(self, name, *args):
  108. result_sp = None
  109. self._open()
  110. self.__session.callproc(name, args)
  111. self.__connection.commit()
  112. for result in self.__session.stored_results():
  113. result_sp = result.fetchall()
  114. self._close()
  115. return result_sp
  116.  
  117. from Mysql import Mysql
  118. connection = Mysql(host='localhost', user='root', password='', database='test')
  119. #Assuming that our table have the fields id and name in this order.
  120. #we can use this way but the parameter should have the same order that table
  121. #connection.insert('table_name',parameters to insert)
  122. connection.insert('test',1, 'Alejandro Mora')
  123. #in this case the order isn't matter
  124. #connection.insert('table_name', field=Value to insert)
  125. connection.insert('test',name='Alejandro Mora', id=1)
  126. #connection.select('Table', where="conditional(optional)", field to returned)
  127. connection.select('test', where="name = 'Alejandro Mora' ")
  128. connection.select('test', None,'id','name')
  129. #connection.update('Table', id, field=Value to update)
  130. connection.update('test', 1, name='Alejandro')
  131. #connection.delete('Table', id)
  132. connection.delete('test', 1)
  133. #connection.call_store_procedure(prodecure name, Values)
  134. connection.call_store_procedure('search_users_by_name', 'Alejandro')
  135.  
  136. query = "SELECT "
  137. l = len(keys) - 1
  138. for i, key in enumerate(keys):
  139. query += "`"+key+"`"
  140. if i < l:
  141. query += ","
  142. query += " FROM %s" % table
  143.  
  144. query = "SELECT `" + "`,`".join(keys) + "` FROM " + table
  145.  
  146. for result in self.__session.stored_results():
  147. result = result.fetchall()
  148.  
  149. for result in self.__session.stored_results():
  150. result.fetchall()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement