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类用法说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。