工具需求:
(1)为了适应多连接下多数据库的操作,同连接多数据库下的操作,同一连接,多个数据库下的操作.
暂时设计:
将database设置成位置参数,连接,端口,密码设置成默认参数,
账户一般是root写死.这样一来,每次操作一般传数据库名即可,有变动时再新增参数覆盖默认值
import pymysql
class Util (object):
'''初始化数据库连接,注意,每次获得的连接,他们的地址不一样,因此要先保留return的返回地址再获取游标,将连接和游标对象直接写在__init__函数里面,主要是保证这两个对象在实例化之后能够以同个地址完成数据库的操作
当前缺陷:无法批量完成测试数据的插入,与预编译有关,暂时未解决
'''
def __init__(self, database, host='127.0.0.1', port=3306, password='23'):
self.conn = pymysql.connect( host=host,
port=port,
user='root',
password=password,
database=database
)
self.cur = self.conn.cursor() #获取游标,生命期在整个对象使用过程中,如果不写在初始化里面,与连接对象分开,那么每次的地址会不同
#增
def insert (self, sql):
rows = self.cur.execute(sql)
self.conn.commit()
print('插入数据成功,受影响的行:{}'.format(rows))
#删
def delete (self, sql):
rows = self.cur.execute(sql)
self.conn.comit()
print('删除数据成功,受影响的行:{}'.format(rows))
#查询最后一条记录
def find_one (self, sql):
self.cur.execute(sql)
datas = self.cur.fetchone()
print(datas) #纯显示
return datas
#查询多条
def find_all (self, sql):
rows = self.cur.execute(sql) #执行sql语句,返回的是影响的行数
datas = self.cur.fetchall() #取出全部数据
print('已查询到{}条数据'.format(rows))
for i in datas:
print(i)
return datas
def modify (self, sql):
rows = self.cur.execute(sql)
self.conn.commit()
print('已更新{}条数据'.format(rows))
return rows
#释放连接和游标资源
def release (self):
self.conn.close()
self.cur.close()
if __name__=='__main__':
test = Util('test1')