python db类用法说明
我就废话不多说了,大家还是直接看代码吧~
importpymysql classDB: __host='localhost'#服务器地址 __username='root'#用户名 __password=''#密码 __database='test'#数据库 __field='*'#查询字段 __where=''#条件 __sql=False#是否返回sql __join=''#联表 __order=''#排序 __limit=''#数量 #构造函数,在生成对象时调用 def__init__(self,table): try: #打开数据库连接host,username,password,database self.db=pymysql.connect(self.__host,self.__username,self.__password,self.__database) exceptExceptionase: print(e) exit() #使用cursor()方法创建一个游标对象cursor self.cursor=self.db.cursor() self.table=table #析构函数,释放对象时使用 def__del__(self): try: #关闭数据库连接 self.db.close() exceptExceptionase: print(e) #得到当前sql语句 defgetSql(self): self.__sql=True returnself #字段 deffield(self,str): self.__field=str returnself #联表 defjoin(self,table,where): self.__join='LEFTJOIN'+table+'ON'+where+'' returnself #条件 defwhere(self,param): self.__where='WHERE' ifisinstance(param,list): foriinparam: ifisinstance(i[2],list): tmp='(' forjini[2]: tmp+=str(j)+',' tmp+=')' self.__where+='`'+i[0]+'`'+i[1]+''+tmp+'AND' else: self.__where+='`'+i[0]+'`'+i[1]+''+str(i[2])+'AND' else: self.__where=self.__where[0:-4] else: self.__where+=param returnself #排序 deforder(self,str): self.__order='ORDERBY'+str returnself #数量 deflimit(self,str): self.__limit='LIMIT'+str returnself #增加 definsert(self,dict): key=value='' fork,vindict.items(): key+='`'+k+'`,' value+='"'+v+'",' key=key[0:-1] value=value[0:-1] sql='INSERTINTO'+self.table+'('+key+')VALUES('+value+')' ifself.__sql: returnsql try: #执行sql语句 ret=self.cursor.execute(sql) #提交到数据库执行 self.db.commit() returnret exceptExceptionase: #如果发生错误则回滚 self.db.rollback() print(e) return0 #删除 defdelete(self): ifself.__where: sql="DELETEFROM"+self.table+self.__where ifself.__sql: returnsql try: #执行sql语句 ret=self.cursor.execute(sql) #提交到数据库执行 self.db.commit() returnret exceptExceptionase: #如果发生错误则回滚 self.db.rollback() print(e) return0 else: raiseBaseException('没有条件')#抛异常 #修改 defupdate(self,dict): str='' fork,vindict.items(): str+='`'+k+'`="'+v+'",' str=str[0:-1] sql='UPDATE'+self.table+'SET'+str ifself.__where: sql+=self.__where ifself.__sql: returnsql try: #执行sql语句 ret=self.cursor.execute(sql) #提交到数据库执行 self.db.commit() returnret exceptExceptionase: #如果发生错误则回滚 self.db.rollback() print(e) return0 #查询 defselect(self): sql="SELECT"+self.__field+"FROM"+self.table ifself.__join: sql+=self.__join ifself.__where: sql+=self.__where ifself.__order: sql+=self.__order ifself.__limit: sql+=self.__limit ifself.__sql: returnsql #使用execute()方法执行SQL查询 self.cursor.execute(sql) #使用fetchall()方法获取所有数据. data=self.cursor.fetchall() returndata ''' DROPTABLEIFEXISTS`people`; CREATETABLE`people`( `id`int(11)unsignedNOTNULLAUTO_INCREMENT, `name`varchar(20)CHARACTERSETutf8mb4COLLATEutf8mb4_binNOTNULLCOMMENT'名字', `sex`varchar(7)DEFAULT''COMMENT'性别', `job`varchar(6)DEFAULT''COMMENT'工作', `age`varchar(6)DEFAULT''COMMENT'年龄', `height`varchar(6)DEFAULT''COMMENT'身高', `weight`varchar(6)DEFAULT''COMMENT'体重', PRIMARYKEY(`id`) )ENGINE=InnoDBAUTO_INCREMENT=5DEFAULTCHARSET=utf8; INSERTINTO`people`VALUES('1','赵一','男','学生','8','120','35'); INSERTINTO`people`VALUES('2','钱二','女','学生','9','111','31'); INSERTINTO`people`VALUES('3','孙三','男','学生','10','123','34'); INSERTINTO`people`VALUES('4','李四','女','学生','11','100','30'); ''' db=DB('people') #增加 dict={'name':'周五','sex':'男','job':'学生','age':'8','height':'121','weight':'32'} data=db.insert(dict) print(data) #删除 #data=db.where('id=6').delete() #print(data) #修改 #dict={'age':'9','height':'121','weight':'31'} #data=db.where('id=7').update(dict) #print(data) #查询优化where条件'id<11' #data=db.field('id,name,age,job').where([['id','>',1]]).order('iddesc').limit('3').select() #print(data)
补充知识:pythonDBAPIcursor常用接口
1.description
如果cursor执行了查询的sql代码。那么读取cursor.description属性的时候,将返回一个列表,这个列表中装的是元组,元组中装的分别
是(name,type_code,display_size,internal_size,precision,scale,null_ok),其中name代表的是查找出来的数据的字段名称,其他参数暂时用处不大。
2.rowcount
代表的是在执行了sql语句后受影响的行数。
3.close
关闭游标。关闭游标以后就再也不能使用了,否则会抛出异常。
4.execute(sql[,parameters])
执行某个sql语句。如果在执行sql语句的时候还需要传递参数,那么可以传给parameters参数。示例代码如下:
cursor.execute("select*fromarticlewhereid=%s",(1,))
5.fetchone
在执行了查询操作以后,获取第一条数据。
6.fetchmany(size)
在执行查询操作以后,获取多条数据。具体是多少条要看传的size参数。如果不传size参数,那么默认是获取第一条数据。
7.fetchall
获取所有满足sql语句的数据。
以上这篇pythondb类用法说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。