importconfigimportMySQLdbimportsysfromcollectionsimportOrderedDictclassDatabaseConnect(object):_db_connection=None_db_cur=None# __session = None# __connection = Nonedef__init__(self):self._db_connection=MySQLdb.connect(host=config.mysqlhost,user=config.mysqluser,passwd=config.mysqlpass,db=config.mysqldbnm)# self._db_connection.ping(True)self._db_cur=self._db_connection.cursor()def__del__(self):self._db_connection.close()defquery(self,query,param=None):returnself._db_cur.execute(query,param)defselect(self,table,where=None,*args,**kwargs):result=Nonequery='SELECT 'keys=argsvalues=tuple(kwargs.values())l=len(keys)-1ifkeys:fori,keyinenumerate(keys):query+="`"+key+"`"ifi<l:query+=","else:query+='*'query+='FROM %s'%tableifwhere:query+=" WHERE %s"%where# End if where# self.__open()self._db_cur.execute(query,values)number_rows=self._db_cur.rowcountnumber_columns=len(self._db_cur.description)ifnumber_rows>=1andnumber_columns>1:result=[itemforiteminself._db_cur.fetchall()]else:result=[item[0]foriteminself._db_cur.fetchall()]# self.__close()returnresultdefupdate(self,table,where=None,*args,**kwargs):query="UPDATE %s SET "%tablekeys=kwargs.keys()values=tuple(kwargs.values())+tuple(args)l=len(keys)-1fori,keyinenumerate(keys):query+="`"+key+"` = %s"ifi<l:query+=","# End if i less than 1# End for keysquery+=" WHERE %s"%where# self.__open()self._db_cur.execute(query,values)self._db_connection.commit()# Obtain rows affectedupdate_rows=self._db_cur.rowcount# self.__close()returnupdate_rowsdefinsert(self,table,*args,**kwargs):values=Nonequery="INSERT INTO %s "%tableifkwargs:keys=kwargs.keys()values=tuple(kwargs.values())query+="("+",".join(["`%s`"]*len(keys))%tuple(keys)+ \
") VALUES ("+",".join(["%s"]*len(values))+")"elifargs:values=argsquery+=" VALUES("+",".join(["%s"]*len(values))+")"# self.__open()self._db_cur.execute(query,values)self._db_connection.commit()# self.__close()returnself._db_cur.lastrowiddefdelete(self,table,where=None,*args):query="DELETE FROM %s"%tableifwhere:query+=' WHERE %s'%wherevalues=tuple(args)# self.__open()self._db_cur.execute(query,values)self._db_connection.commit()# Obtain rows affecteddelete_rows=self._db_cur.rowcount# self.__close()returndelete_rowsdefselect_advanced(self,sql,*args):od=OrderedDict(args)query=sqlvalues=tuple(od.values())# self.__open()self._db_cur.execute(query,values)number_rows=self._db_cur.rowcountnumber_columns=len(self._db_cur.description)ifnumber_rows>=1andnumber_columns>1:result=[itemforiteminself._db_cur.fetchall()]else:result=[item[0]foriteminself._db_cur.fetchall()]# self.__close()returnresult
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
This is my code