目标:
封装一个模块
功能,调用模块,可以快捷的操作pymysql 的相关功能
分析:
-
pymysql,用它哪个功能(明确模块中应该要有哪些方法)
-
pymysql,是不是一导入就能够直接使用(明确是否需要初始化)
pymysql并不是一导入就可以用的
使用之前要做一些事情
(考虑:把使用前必做的事情,放到初始化的init方法中)
更进一步
- 初始化,做什么
pymysql在使用之前,得先
1,连接mysql,获得连接对象
2,通过连接对象,获得游标对象
- 方法写什么
实际,是有两种执行sql语句的方案
1,一种是直接执行
查询的时候,不需要做其它操作,让游标直接查就可以了
2,先执行,再提交
增,删,改操作的时候,不仅仅是游标对象执行sql语句,连接对象还得向上提交一下才可以。
附:封装好的代码
""" 数据库模块 """
import pymysql
class DbSchool:
def __init__(self):
self.conn = self.get_conn() # 连接对象
self.cursor = self.get_cursor() # 游标对象
def get_conn(self):
""" 获取连接对象 """
conn = pymysql.connect(
host="127.0.0.1",
port=3306,
user="root",
passwd="root",
db="python2019",
charset="utf8"
)
return conn
def get_cursor(self):
"""获取游标对象"""
# cursor = None
cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)
return cursor
def select_all(self, sql):
"""
查询全部
:param sql: 查询语句
:return: [{},{}]
"""
self.cursor.execute(sql)
return self.cursor.fetchall()
def select_one(self, sql):
"""
查询一个
:param sql: 查询语句
:return: {}
"""
self.cursor.execute(sql)
return self.cursor.fetchone()
def commit_data(self, sql):
"""
提交数据
:param sql:
:return:
"""
self.cursor.execute(sql)
self.conn.commit()
print("表连接对象,提交成功")
def __del__(self):
self.cursor.close()
self.conn.close()
db = DbSchool()