import pymysql import config ''' 1.0 简单封装 1.1 添加了insert_id属性,返回insert时返回的主键 1.2 添加了column属性,返回查询的column 1.3 添加一个insert 1.4 添加了一个insertList支持批量添加 ''' class Db: ''' 数据库操作类 Attributes: transactionFlag:是否开启事务 insert_id:insert时返回的主键 ''' def __init__(self): ''' insert_id:insert时返回的主键 ''' self.insert_id = 0 self.column = None def __init__(self, transactionFlag=False): ''' transactionFlag:是否开启事务 insert_id:insert时返回的主键 ''' self.insert_id = 0 self.column = None self.transFlag = transactionFlag self.conn = pymysql.connect(host=config.host, port=config.port, user=config.user, passwd=config.passwd, db=config.db, charset='utf8') def close(): ''' 关闭连接 ''' self.conn.close() def execSql(self, sql, param=None): ''' 执行增删改语句,返回影响的行数 sql:要执行的sql param:sql是的参数,默认值为None ''' cursor = self.conn.cursor() if param == None: a = cursor.execute(sql) else: a = cursor.execute(sql, param) self.insert_id = cursor.lastrowid self.column = cursor.description if self.transFlag == False: self.commit() return a def query(self, sql, param=None): ''' 执行查询语句 sql:要执行的sql param:sql是的参数,默认值为None ''' cursor = self.conn.cursor(pymysql.cursors.DictCursor) if param == None: cursor.execute(sql) else: cursor.execute(sql, param) ret = cursor.fetchall() self.column = cursor.description cursor.close() return ret def queryOne(self, sql, param=None): ''' 执行查询语句 sql:要执行的sql param:sql是的参数,默认值为None ''' cursor = self.conn.cursor(pymysql.cursors.DictCursor) if param == None: cursor.execute(sql) else: cursor.execute(sql, param) ret = cursor.fetchone() cursor.close() return ret def insert(self, table, keyvalue): ''' 以键值对的方式添加数据,简化insert ''' keylist = [] valuelist = [] for key, value in keyvalue.items(): keylist.append(key) valuelist.append("'%s'" % value) sql = "insert into %s(%s) values(%s)" % ( table, ','.join(keylist), ",".join(valuelist)) return self.execSql(sql) def insertList(self, table, keyvalueList): ''' 以键值对的方式添加数据,简化insert ''' keylist = [] first = keyvalueList[0] for key, value in first.items(): keylist.append(key) sql = "insert into %s(%s) values" % ( table, ','.join(keylist)) valuelist = [] for kv in keyvalueList: vlist = [] for k in keylist: vlist.append("'%s'" % kv[k]) valuelist.append("(" + ','.join(vlist) + ")") sql = sql + ",".join(valuelist) return self.execSql(sql) def commit(self): self.conn.commit() def rollback(self): self.conn.rollback()