开头
经过这么一段时间的学生信息管理系统的摸爬滚打,不断的学习更新的知识,不断修改自己的认知,针对pymysql以及MySQL数据库的知识做个总结,以纪念我这段时间的学习。
目录
开头
pymysql的使用流程
1.导入pymysql的工具包
方法一、使用pip工具
可能会出现的问题
方法二、使用pycharm中配置到python解释器
可能会出现的问题
2.连接数据库
3. 使用cursor获取游标
4.根据游标使用相关的方法
5.关闭游标和数据库
为什么要关闭游标?
为什么要关闭数据库?
为什么要回滚事务?
结尾
pymysql的使用流程
pymysql的使用也是有一定流程的,需要有如下几步
1.导入pymysql的工具包
方法一、使用pip工具
可以使用pip工具,在终端中输入如下代码
pip install pymysql
可能会出现的问题
方法一的pip工具需要把scripts配置到系统中,打开环境变量,把scripts的文件路径复制,然后添加到系统变量中就可以了
方法二、使用pycharm中配置到python解释器
此时需要点击settings——Project:项目名——Python Interpreter
然后点击右侧这一栏,这是你的项目,选中有着python解释器的项目
点击这个+号——Available Packages中的下面有个放大镜的一栏,输入pymysql即可,然后Install Package即可,不过此时仍需要等待它提示安装好了
可能会出现的问题
点击+号之后,等待好久pycharm的packages显示不出来,建议就是清除缓存,然后重启;
2.连接数据库
当然是需要你去连接你的数据库了,如果不链接的话,你怎么用MySQL数据库呢。
import json
import pymysql
class DatabaseConnect:
_json_config = None # 设置一个类属性
@classmethod # 使用静态方法,注解告诉解释器要干什么
def load(cls, json_path=r'E:\UBD_3\database_login.json'):
if not cls._json_config:
with open(json_path, 'r') as f:
cls._json_config = json.load(f) # 通过该cls对象给类属性添加相关的信息,以实现只读一次json文件
# print(_json_config)
def __init__(self):
try:
self.load()
# self.connect_database()
except Exception as e:
print('初始化过程错误' + str(e))
def connect_database(self):
try:
db = pymysql.connect(
host=self._json_config['host'],
port=self._json_config['port'],
user=self._json_config['username'],
password=self._json_config['password'],
charset=self._json_config['charset'],
database=self._json_config['database']
)
print('数据库连接成功')
return db # 这里返回db是为了之后使用游标更方便
except pymysql.Error as e:
print(f"数据库连接异常: {type(e).__name__}: {e}")
上述代码中关键连接部分在 connect_database方法中,然后根据你的host、port、user、password、database等参数需要使用,这样才可以连接到MySQL数据库,相应的设置异常捕获机制自然会更容易做好。
3. 使用cursor获取游标
pymysql的方法使用需要用到游标
首先,需要创建游标对象根据你的连接的返回值,上述代码连接数据库的方法返回了db
然后,创建游标对象
# 创建游标对象
cur = db.cursor()
4.根据游标使用相关的方法
sqlquery = 'select * from students where id=%d' # 这里的from之后的students是你的数据库中的表
value = None # 这里的value值需要你自己传入
cur.execute(sqlquery, value) # pymysql库有自动匹配的方法,虽然你自己可以传入的%s,然后他会去转成int型,不过你传入的数据不能是错误的
result = cur.fetchall() # 获取返回值
print(result) # 把返回值输出出来
5.关闭游标和数据库
首先,会提出这个问题,为什么要去关闭游标和数据库,然后又会提出各种问题
为什么要关闭游标?
1.为了释放资源,在游标使用的过程之中,它会占用一定的内存资源来存储信息,如果不及时关闭的话看这些资源会被一直浪费;它还会影响到数据库的连接,可能现在你有100个可以进行连接的游标接口,然后你创建了一百个游标,那你之后创建的游标可能就无法使用了。
2.为了保持数据的一致,当你创建了一个游标,然后又创建了一个游标之后,你进行的操作分别在这两个游标之后,然后你第二个创建的游标的跟的方法就可能会读出来第一个游标方法返回的数据。当你进行一个类似的操作的时候,如果返回的值也是类似的话,可以考虑是游标未关闭造成的,这个数据返回与预期不一致的问题。
为什么要关闭数据库?
是这么理解的,就像是你拿个桶要接水,除非在你后面的那个人跟你说不用关,不然你打可能会直接关掉,数据库也会像这样,使用完了就会关掉,不然都话在这之间会有浪费的资源,时间长了之后还会造成卡顿等现象,然后卡死。
为什么要回滚事务?
因为当初出现错误的时候,回滚事务可以直接回到在未执行的时候,这时候使用异常处理机制,try:成立就提交事务,不成立就回滚事务。
结尾
既然看到结尾了,那就说个再见吧,没有什么太多的了,如有不同见解,评论指教即可。