面向对象对pymysql进行极简单的封装

import pymysql
from pymysql.cursors import DictCursor

class NoDataBaseException(Exception):
pass

class DBHelper:
def __init__(self, database=None, host="localhost", port=3306, username="root", password="1234"):
if database:
self.conn = pymysql.connect(
host=host,
port=port,
user=username,
password=password,
database=database
)
else:
raise NoDataBaseException("没有提供正确的数据库")

def __enter__(self):
return self

def __exit__(self, exc_type, exc_val, exc_tb):
return self.conn.close()

def _change(self, sql, *args, isInsert=False):
cursor = self.conn.cursor(cursor=DictCursor)
try:
rownum = cursor.execute(sql, args)
self.conn.commit()
if isInsert:
return cursor.lastrowid
else:
return rownum
except Exception as e:
print("报错了", e)
self.conn.rollback()
finally:
cursor.close()

def insert(self, sql, *args):
return self._change(sql, *args, isInsert=True)

def update(self, sql, *args):
return self._change(sql, *args)

def delete(self, sql, *args):
return self._change(sql, *args)

def query_list(self, sql, *args):
cursor = self.conn.cursor(cursor=DictCursor)
try:
cursor.execute(sql, args)
result = cursor.fetchall()
return result
finally:
cursor.close()

def query_one(self, sql, *args):
cursor = self.conn.cursor(cursor=DictCursor)
try:
cursor.execute(sql, args)
result = cursor.fetchone()
return result
finally:
cursor.close()

if __name__ == '__main__':
with DBHelper("spider") as db: # ""里面填数据库库名 where 后面的参数 %s ,
pass
# 添加数据
# result = db.insert('insert into stu_new (sname, sgender, sage, score, class) values ("赵e山", 2, 165, 277, "八年六班")')
# print(result)

# 修改数据 delete 和 update 俩个一样,调那个都可以
# result = db.update("update stu_new set sname='王八' where sno = %s", 13)
# print(result)

# 删除数据
# result = db.delete("delete from stu where sno = %s", 13)
# print(result)

# 查看所有数据
# result = db.query_list("select * from stu1")
# print(result)

# result = db.query_list("select * from stu1 where gender=%s and address like %s", 1, "%四川%")
# print(result)

# # 查看一条数据
# result = db.query_one("select * from stu_new where sno=%s", 9)
# print(result)





































posted @ 2023-08-12 17:06  严永富  阅读(56)  评论(0)    收藏  举报