概述
直接使用python api操作数据库,已经很方便实用了,但有时我们根据需求,还是再次封装,让操作更加简单
# coding=utf-8
import mysql.connector
class MySQLUtil:
def __init__(self):
self._conn=None
self._rowcount=0
def connect(self,user,password,host,port,database,buffered=True):
self._conn=mysql.connector.connect(user=user,
password=password,
host=host,
port=port,
database=database,
buffered=buffered
)
def queryall(self,sql,paras=None):
'''
执行select语句,返回所有结果,list类型
'''
try:
cursor=self._conn.cursor()
cursor.execute(sql,paras)
datas=cursor.fetchall()
self._rowcount=cursor.rowcount
return datas
finally:
cursor.close()
def queryone(self,sql,paras=None):
'''
执行select语句,返回一条记录,tuple类型
'''
try:
cursor=self._conn.cursor()
cursor.execute(sql,paras)
data=cursor.fetchone()
self._rowcount=cursor.rowcount
return data
finally:
cursor.close()
def update(self,sql,paras):
'''
执行insert、update、delete语句,返回影响的记录数据
'''
try:
cursor=self._conn.cursor()
cursor.execute(sql,paras)
self._rowcount=cursor.rowcount
return self._rowcount
finally:
cursor.close()
@property
def rowcount(self):
'''
如果是执行queryall()、queryone(),就返回查询结果的行数
如果是执行update(),返回影响的记录数据
'''
return self._rowcount
def commit(self):
self._conn.commit()
def rollback(self):
self._conn.rollback()
def close(self):
self._conn.close()
if __name__ == "__main__":
try:
db=MySQLUtil()
db.connect('root','','127.0.0.1','3308','test',True)
datas=db.queryone("select * from user where password=%s",['123456'])
print(datas)
print(db.rowcount)
# num=db.update("update user set password=%s where id=%s",['1','3920e47cf7224e0eb9a1d75f9ded3f4e'])
# print(num)
# print(db.rowcount)
# db.commit()
finally:
db.close()