1、核心要素
- 数据库链接对象
- 游标链接对象
- 数据连接的参数 (主机名 端口号 用户名 密码 链接数据库的名称 )
- sql 语句 (DQL DDL DML DCL )
- 数据库中的事务
2、相关知识点
pymysql 模块
3、python代码实现
- 构造函数
- 链接对象
- 游标对象
- 关闭链接
- 执行sql
import pymysql
class DBUtil():
# initial
__conn = None
__cursor = None
@classmethod
def __init__(cls, host, port, user, password, database):
cls.host = host
cls.port = port
cls.user = user
cls.password = password
cls.database = database
# connection
@classmethod
def __get_conn(cls):
if cls.__conn is None:
cls.__conn = pymysql.connect(host=cls.host,
port=cls.port,
user=cls.user,
password=cls.password,
database=cls.database)
return cls.__conn
# cursor
@classmethod
def __get_cursor(cls):
if cls.__cursor is None:
cls.__cursor = cls.__get_conn().cursor()
return cls.__cursor
@classmethod
def close_cursor(cls):
if cls.__cursor:
cls.__get_cursor().close()
cls.__cursor = None
@classmethod
def close_conn(cls):
if cls.__conn:
cls.__get_conn().close()
cls.__conn = None
# sql
@classmethod
def exe_sql(cls, sql):
try:
# cursor
cursor = cls.__get_cursor()
# sql execute
cursor.execute(sql)
# if select
if sql.split(" ", 1)[0].lower() == "select":
# 返回所有数据内容
return cursor.fetchall()
# transaction
cls.__conn.commit()
return cursor.rowcount
except Exception as e:
cls.__conn.rollback()
print(e)
finally:
cls.__get_cursor()
cls.__get_conn()