pymysql的使用
1、操作流程
# 导包 import pymysql # 创建连接 conn = pymysql.connect(host="localhost", # 主机名或IP地址 port=3306, # 端口 user="root", # 用户名 password="root", # 密码 database="books") # 数据库名 # 获取游标 cursor = conn.cursor() # 执行sql sql = "......" cursor.execute(sql) # 关闭游标 cursor.close() # 关闭连接 conn.close()
注意点:非查询操作需要提交事务
提交方法:
1、自动提交
autocommit=True
2、主动提交
提交事务: conn.commit()
回滚事务: conn.rollback()
2、数据库工具封装思路
1、创建连接
2、创建游标
3、执行sql
try:
# 获取游标对象
# 调用游标对象.execute(sql)
# 如果是 查询:
# 返回所有数据
# 否则:
# 提交事务
# 返回受影响的行数
except:
# 回滚事务
# 抛出异常
finally:
# 关闭游标
# 关闭连接
4、关闭游标
5、关闭连接
3、封装实现
# 导包 import pymysql # 创建工具类 class DBUtil(): # 初始化 __conn = None __cursor = None # 创建连接 @classmethod def __get_conn(cls): if cls.__conn is None: cls.__conn = pymysql.connect(host="localhost", port=3306, user="root", password="151621", database="books") return cls.__conn # 获取游标 @classmethod def __get_cursor(cls): if cls.__cursor is None: cls.__cursor = cls.__get_conn().cursor() return cls.__cursor # 执行sql @classmethod def exe_sql(cls, sql): try: # 获取游标对象 cursor = cls.__get_cursor() # 调用游标对象的execute方法,执行sql cursor.execute(sql) # 如果是查询 if sql.split()[0].lower() == "select": # 返回所有数据 return cursor.fetchall() # 否则: else: # 提交事务 cls.__conn.commit() # 返回受影响的行数 return cursor.rowcount except Exception as e: # 事务回滚 cls.__conn.rollback() # 打印异常信息 print(e) finally: # 关闭游标 cls.__close_cursor() # 关闭连接 cls.__close_conn() # 关闭游标 @classmethod def __close_cursor(cls): if cls.__cursor: cls.__cursor.close() cls.__cursor = None # 关闭连接 @classmethod def __close_conn(cls): if cls.__conn: cls.__conn.close() cls.__conn = None
4、使用
from dbutil import DBUtil # sql = "select * from t_book" # sql = "insert into t_book(id, title, pub_date) values(4, '西游记', '1986- 01-01');" # sql = "update t_book set title='东游记' where title = '西游记';" # sql = "delete from t_book where title = '东游记';" result = DBUtil.exe_sql(sql) print(result)

浙公网安备 33010602011771号