• 猿创征文|Python基础——Visual Studio版本——第六章 MySQL操作


    Python基础——Visual Studio版本——第六章 MySQL操作

    目录

    Python基础——Visual Studio版本——第六章 MySQL操作

    1、环境配置

    2、环境引入与连接测试

    3、创建数据库表

    4、增删改语句测试

    5、查询语句测试

    6、事务测试

    异常提交

    无异常提交

    7、封装DBHelper.py


    1、环境配置

    1. pip3 config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple
    2. pip3 config list
    3. pip3 install --upgrade pip
    4. pip3 install pymysql

    2、环境引入与连接测试

    数据库是我阿里的数据库,可以用到23年。做测试没问题。

    输入顺序:host连接地址,port连接端口号,user连接用户名,password连接密码,db连接数据库,charset连接的编码格式。

    1. import pymysql # 链接MySQL
    2. db = pymysql.connect(host='rm-bp1zq3879r28p726lco.mysql.rds.aliyuncs.com',
    3. port=3306,
    4. user='qwe8403000',
    5. password='Qwe8403000',
    6. db='mytest',
    7. charset='utf8')
    8. print(db)

    3、创建数据库表

    核心编码

    1. conn = pymysql.connect() # 创建连接
    2. cursor = conn.cursor() #获取游标对象
    3. rows = cursor.execute(sql) #执行SQL语句
    4. conn.commit() #提交数据库连接,如果是增、删、改操作,则必须提交
    5. cursor.close() #关闭游标对象
    6. conn.close() #关闭数据库连接
    1. import pymysql
    2. #创建数据库连接
    3. conn = pymysql.connect(host='rm-bp1zq3879r28p726lco.mysql.rds.aliyuncs.com',
    4. port=3306,
    5. user='qwe8403000',
    6. password='Qwe8403000',
    7. db='mytest',
    8. charset='utf8')
    9. cursor = conn.cursor() #获取游标对象
    10. #定义创建user表的sql语句,使用三引号'''表示格式化字符串
    11. sql = """CREATE TABLE mytestuser20220829 ( userid int(8) NOT NULL auto_increment,
    12. username varchar(50) NOT NULL,
    13. password varchar(50) default NULL,
    14. PRIMARY KEY (userid))"""
    15. rows = cursor.execute(sql) #执行SQL语句
    16. conn.commit() #提交数据库连接,如果是增、删、改操作,则必须提交
    17. print("mytestuser20220829表创建成功")
    18. cursor.close() #关闭游标对象
    19. conn.close() #关闭数据库连接

    4、增删改语句测试

    游标可以多次执行sql语句,最终进行commit即可。

    1. import pymysql
    2. #创建数据库连接
    3. conn = pymysql.connect(host='rm-bp1zq3879r28p726lco.mysql.rds.aliyuncs.com',
    4. port=3306,
    5. user='qwe8403000',
    6. password='Qwe8403000',
    7. db='mytest',
    8. charset='utf8')
    9. cursor = conn.cursor() #获取游标对象
    10. #定义创建user表的sql语句,使用三引号'''表示格式化字符串
    11. sqlInsert1 = "insert into mytestuser20220829 values(0,'{0}',{1})".format("王语嫣", "123")
    12. sqlInsert2 = "insert into mytestuser20220829 values(0,'{0}',{1})".format("小龙女","123")
    13. sqlInsert3 = "insert into mytestuser20220829 values(0,'{0}',{1})".format("赵灵儿", "321")
    14. sqlInsert4 = "insert into mytestuser20220829 values(0,'{0}',{1})".format("删除测试", "321")
    15. cursor.execute(sqlInsert1)
    16. cursor.execute(sqlInsert2)
    17. cursor.execute(sqlInsert3)
    18. cursor.execute(sqlInsert4)
    19. sqlUpdate = "update mytestuser20220829 set password='{0}' where username='{1}'".format("潇洒的姑娘", "赵灵儿")
    20. cursor.execute(sqlUpdate)
    21. sqlDelete = "delete from mytestuser20220829 where username='{0}'".format("删除测试")
    22. cursor.execute(sqlDelete)
    23. # 提交
    24. conn.commit()
    25. # 关闭游标
    26. cursor.close()
    27. # 关闭数据库
    28. conn.close()

    5、查询语句测试

    使用fetchall函数就可以获取游标中的数据了。

    1. import pymysql
    2. #创建数据库连接
    3. conn = pymysql.connect(host='rm-bp1zq3879r28p726lco.mysql.rds.aliyuncs.com',
    4. port=3306,
    5. user='qwe8403000',
    6. password='Qwe8403000',
    7. db='mytest',
    8. charset='utf8')
    9. cursor = conn.cursor() #获取游标对象
    10. sql = "select * from mytestuser20220829" # 执行SQL
    11. cursor.execute(sql) # 回去返回集合
    12. data = cursor.fetchall()
    13. for item in data:
    14. print(item[0])
    15. print(item[1])
    16. print(item[2])
    17. # 关闭游标
    18. cursor.close()
    19. # 关闭数据库
    20. conn.close()

    6、事务测试

    ACID_MySQL事务的四大特性详解(MySQL高频面试题)_红目香薰的博客-CSDN博客

    异常提交

    异常回滚测试,我这里一个正确的insert一个错误的,正确的肯定是能添加成功的,但是有由于第二个语句错误,所以回滚的时候一同回滚。

    1. import pymysql
    2. #创建数据库连接
    3. conn = pymysql.connect(host='rm-bp1zq3879r28p726lco.mysql.rds.aliyuncs.com',
    4. port=3306,
    5. user='qwe8403000',
    6. password='Qwe8403000',
    7. db='mytest',
    8. charset='utf8')
    9. cursor = conn.cursor() #获取游标对象
    10. try:
    11. sql1 = "insert into mytestuser20220829 values(0,'{0}',{1})".format("事务测试1", "666")
    12. cursor.execute(sql1) # 回去返回集合
    13. sql2 = "insert into mytestuser20220829 values(0,'{0}',{1},{2})".format("事务测试2", "666",66)
    14. cursor.execute(sql2) # 回去返回集合
    15. conn.commit()
    16. except:
    17. print("有异常,数据库回滚")
    18. conn.rollback() #回滚事务,之前的修改操作都不生效
    19. # 关闭游标
    20. cursor.close()
    21. # 关闭数据库
    22. conn.close()

    异常回滚,可以看到没有任何数据添加成功。

    无异常提交

    两个sql语句都是正确的sql,一同提交并无异常。

    1. import pymysql
    2. #创建数据库连接
    3. conn = pymysql.connect(host='rm-bp1zq3879r28p726lco.mysql.rds.aliyuncs.com',
    4. port=3306,
    5. user='qwe8403000',
    6. password='Qwe8403000',
    7. db='mytest',
    8. charset='utf8')
    9. cursor = conn.cursor() #获取游标对象
    10. try:
    11. sql1 = "insert into mytestuser20220829 values(0,'{0}',{1})".format("事务测试1", "666")
    12. cursor.execute(sql1) # 回去返回集合
    13. sql2 = "insert into mytestuser20220829 values(0,'{0}',{1})".format("事务测试2", "666")
    14. cursor.execute(sql2) # 回去返回集合
    15. conn.commit()
    16. except:
    17. print("有异常,数据库回滚")
    18. conn.rollback() #回滚事务,之前的修改操作都不生效
    19. # 关闭游标
    20. cursor.close()
    21. # 关闭数据库
    22. conn.close()

    两条sql都添加成功。

    7、封装DBHelper.py

    主要进行增删改、查询两个函数的封装,其中init是初始化参数,getConnect是获取游标

    1. import pymysql
    2. class DBHelper():
    3. def __init__(self):
    4. # 数据库连接参数
    5. self.host = "rm-bp1zq3879r28p726lco.mysql.rds.aliyuncs.com"
    6. self.user = "qwe8403000"
    7. self.pwd = "Qwe8403000"
    8. self.db = "mytest"
    9. self.charset = "utf-8"
    10. # 获取游标
    11. def getConnect(self):
    12. if not self.db:
    13. raise(NameError, "没有设置数据库信息")
    14. self.conn = pymysql.connect(host=self.host, port=3306, user=self.user, passwd=self.pwd, db=self.db, charset="utf8mb4")
    15. # 按照字典的方式返回
    16. cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)
    17. if not cursor:
    18. raise(NameError, "连接数据库失败")
    19. else:
    20. return cursor
    21. # 查
    22. def query(self, sql):
    23. cursor = self.getConnect()
    24. cursor.execute(sql)
    25. result = cursor.fetchall() # 获取查询的所有数据
    26. # 查询完毕后必须关闭连接
    27. self.conn.close()
    28. return result
    29. # 增删改
    30. def excute(self, sql):
    31. cursor = self.getConnect()
    32. cursor.execute(sql)
    33. self.conn.commit()
    34. self.conn.close()

    使用DBHelper测试

    1. from DBHelper import DBHelper
    2. db=DBHelper()
    3. db.excute("insert into mytestuser20220829 values(0,'{0}',{1})".format("DBHelper测试数据1", "666"))
    4. db.excute("insert into mytestuser20220829 values(0,'{0}',{1})".format("DBHelper测试数据2", "666"))
    5. db.excute("insert into mytestuser20220829 values(0,'{0}',{1})".format("DBHelper测试数据3", "666"))
    6. db.excute("insert into mytestuser20220829 values(0,'{0}',{1})".format("DBHelper测试数据4", "666"))
    7. db.excute("insert into mytestuser20220829 values(0,'{0}',{1})".format("DBHelper测试数据5", "666"))
    8. result=db.query("select * from mytestuser20220829")
    9. print(result)

    封装完毕。

  • 相关阅读:
    Snackbar的使用和顶部Snackbar实现
    【愚公系列】2022年11月 .NET CORE工具案例-.NET 7中的WebTransport通信
    3.【异步通信框架】RabbitMQ
    十大排序算法之——快速排序算法(Java实现)及思路讲解
    公共方法+列表、字典和集合推导式
    阿里巴巴中国站按图搜索1688商品(拍立淘) API 返回值说明
    SAP 重复制造简介
    Rust 使用egui创建一个简单的下载器demo
    图书管理系统(https://github.com/plusmultiply0/bookmanagesystem)
    小程序中会员如何绑定身份证信息
  • 原文地址:https://blog.csdn.net/feng8403000/article/details/126574975