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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 猿创征文|Python基础——Visual Studio版本——第六章 MySQL操作

1、环境import pymysql  # 链接MySQL

db = pymysql.connect(host='rm-bp1zq3879r28p726lco.mysql.rds.aliyuncs.com',
                    port=3306, 
                    user='qwe8403000', 
                    password='Qwe8403000', 
                    db='mytest', 
                    charset='utf8')
print(db)

配置

pip3 config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple

pip3 config list

pip3 install --upgrade pip

pip3 install pymysql

2、环境引入与连接测试

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


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


 
         

image.png

3、创建数据库表

核心编码


conn = pymysql.connect()  # 创建连接
cursor = conn.cursor()   #获取游标对象
rows = cursor.execute(sql) #执行SQL语句
conn.commit()  #提交数据库连接,如果是增、删、改操作,则必须提交
cursor.close() #关闭游标对象
conn.close()   #关闭数据库连接

image.png

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



4、增删改语句测试

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


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


image.png


5、查询语句测试

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


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

image.png



6、事务测试

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


异常提交

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


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

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

image.png



无异常提交

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


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


两条sql都添加成功。


image.png


7、封装DBHelper.py

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


import pymysql
class DBHelper():
    def __init__(self):
        # 数据库连接参数
        self.host = "rm-bp1zq3879r28p726lco.mysql.rds.aliyuncs.com"
        self.user = "qwe8403000"
        self.pwd = "Qwe8403000"
        self.db = "mytest"
        self.charset = "utf-8"
    # 获取游标
    def getConnect(self):
        if not self.db:
            raise(NameError, "没有设置数据库信息")
        self.conn = pymysql.connect(host=self.host, port=3306, user=self.user, passwd=self.pwd, db=self.db, charset="utf8mb4")
        # 按照字典的方式返回
        cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)
        if not cursor:
            raise(NameError, "连接数据库失败")
        else:
            return cursor
    # 查
    def query(self, sql):
        cursor = self.getConnect()
        cursor.execute(sql)
        result = cursor.fetchall()  # 获取查询的所有数据
        # 查询完毕后必须关闭连接
        self.conn.close()
        return result
   # 增删改
    def excute(self, sql):
        cursor = self.getConnect()
        cursor.execute(sql)
        self.conn.commit()
        self.conn.close()


使用DBHelper测试


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

image.png


封装完毕。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
13天前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
37 5
|
18天前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
28 1
|
1月前
|
Java 关系型数据库 MySQL
【编程基础知识】Eclipse连接MySQL 8.0时的JDK版本和驱动问题全解析
本文详细解析了在使用Eclipse连接MySQL 8.0时常见的JDK版本不兼容、驱动类错误和时区设置问题,并提供了清晰的解决方案。通过正确配置JDK版本、选择合适的驱动类和设置时区,确保Java应用能够顺利连接MySQL 8.0。
130 1
|
1月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
61 1
|
1月前
|
SQL JSON 关系型数据库
MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
【10月更文挑战第3天】MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
133 5
|
18天前
|
SQL 关系型数据库 MySQL
MySql5.6版本开启慢SQL功能-本次采用永久生效方式
MySql5.6版本开启慢SQL功能-本次采用永久生效方式
32 0
|
2月前
|
SQL 关系型数据库 MySQL
30天拿下Python之使用MySQL
30天拿下Python之使用MySQL
44 0
|
2月前
|
关系型数据库 MySQL 数据管理
pymysql:Python操作MySQL数据库的又一利器
pymysql:Python操作MySQL数据库的又一利器
24 0
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
23 4
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1