defdb_close(self): try: if self.cursor: self.cursor.close() except: pass try: if self.conn: self.conn.close() except: pass defdict_factory(self, cursor, row): d = {} for idx, col in enumerate(cursor.description): d[col[0]] = row[idx] return d defcheck_params_val(self,params,key): return params and key in params and params[key] defget_params_val(self,params,key): if self.check_params_val(params,key): return params[key] else: return''
defdb_parser_params(self,params): sql_table = self.get_params_val(params,'table') sql_params = self.get_params_val(params,'params') sql_where = self.get_params_val(params,'where') if sql_where: sql_where = 'WHERE ' + sql_where sql = '' if self.get_params_val(params,'sql'): sql = self.get_params_val(params,'sql') elif self.get_params_val(params,'insert_flag'): values = '' total = len(sql_params.split(',')) values = ', '.join(['?'for _ in range(total)]) sql = 'INSERT INTO {table} ({params}) VALUES ({values});'\ .format(table=sql_table,params=sql_params,values=values) elif self.get_params_val(params,'update_flag'): if sql_params: params_arr = sql_params.split(',') params_tmp = [ f + ' = ?'for f in params_arr] params_val = ', '.join(params_tmp) sql = 'UPDATE {table} SET {params} {where};'.format(table=sql_table,\ params=params_val,where=sql_where) elif self.get_params_val(params,'delete_flag'): sql = 'DELETE FROM {table} {where};'.format(table=sql_table,where=sql_where) elif self.get_params_val(params,'select_flag'): ifnot sql_params: sql_params = '*' group_by = self.get_params_val(params,'group_by') if group_by: group_by = ' GROUP BY {0}'.format(group_by) having = self.get_params_val(params,'having') if having: having = ' HAVING {0}'.format(having) asc = self.get_params_val(params,'order_by_asc') if asc: asc_arr = asc.split(',') asc = [f + ' ASC'for f in asc_arr] asc = ','.join(asc) desc = self.get_params_val(params,'order_by_desc') if desc: desc_arr = desc.split(',') desc = [f + ' DESC'for f in desc_arr] desc = ','.join(desc) if asc and desc: order_by = 'ORDER BY {0}, {1}'.format(asc,desc) elif asc or desc: order_by = 'ORDER BY {0} {1}'.format(asc,desc) else: order_by = '' limit = self.get_params_val(params,'limit') if limit: limit = 'LIMIT {0}'.format(limit) last = self.get_params_val(params,'last') if last: last = '{0}'.format(last) sql = 'SELECT {params} FROM {table} {where} {group_by} {having} {order_by} {limit} {last}'\ .format(params=sql_params,table=sql_table,where=sql_where,group_by=group_by,having=having,\ order_by=order_by,limit=limit,last=last) return sql
defupdate_one(self,sql,values=''): try: self.db_conn() if values: self.cursor.execute(sql,values) else: self.cursor.execute(sql) self.conn.commit() returnTrue except Exception as e: print(e) self.conn.rollback() finally: self.db_close() returnFalse defupdate_batch(self,sql,values=''): try: self.db_conn() if values: self.cursor.executemany(sql,values) else: self.cursor.executemany(sql) self.conn.commit() returnTrue except Exception as e: print(e) self.conn.rollback() finally: self.db_close() returnFalse