MySQL初级篇(四)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL初级篇(四)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、pymysql

1、 安装与连接

--- 安装
pip install pymysql
---连接
user=None,  
password="",
host=None,
database=None,
---这里我们使用try
try:
    # 如果不能保证一定正确
    conn = pymysql.connect(
        user='root',
        password="root",
        host='127.0.0.1',
        database='py2204',
        port=3306,
        charset="utf8"
    )
except Exception as e:
    print(e)
conn.close() 关闭连接
conn.commit() 提交数据
conn.rollback() 撤销数据

2、 查

---1.通过通过连接对象创建游标对象
cursor = conn.cursor()
---2.编写指令
sql = "select * from student"
---3.发送指令
res = cursor.excute(sql) 
print(res) # 这里我们返回的是影响的行数
rows = cursor.fetchall() # 查询所有
print(rows)
打印如下:
((1, '赵一', 10, 172.0, 60.0), (2, '钱二', 17, 160.5, 50.0), (3, '孙三', 16, 152.2, 47.0), (4, '李四', 10, 177.5, 62.0), (5, '周五', 12, 168.0, 55.0), (6, '吴六', 12, 157.9, 50.0), (7, '郑七', 11, 156.0, 45.0), (8, '王八', 20, 160.5, 45.0), (9, '冯九', 12, 166.7, 60.0), (10, '陈十', 16, 167.5, 65.0))
for row in rows: # 遍历一下
     print(row)
打印如下:
(1, '赵一', 10, 172.0, 60.0)
(2, '钱二', 17, 160.5, 50.0)
(3, '孙三', 16, 152.2, 47.0)
(4, '李四', 10, 177.5, 62.0)
(5, '周五', 12, 168.0, 55.0)
(6, '吴六', 12, 157.9, 50.0)
(7, '郑七', 11, 156.0, 45.0)
(8, '王八', 20, 160.5, 45.0)
(9, '冯九', 12, 166.7, 60.0)
(10, '陈十', 16, 167.5, 65.0)
---查询下一条
cursor = conn.cursor()
sql = "select * from student"
res = cursor.execute(sql) # 返回 影响 的条数
rows = cursor.fetchone() # 查询所有
print(rows)
打印如下:
(1, '赵一', 10, 172.0, 60.0)
---为了避免输出的数据不清楚是啥可以通过字典进行一一对应
cursor = conn.cursor()
sql = "select * from student"
res = cursor.execute(sql) # 返回 影响 的条数
rows = cursor.fetchall() # 查询所有
# 获取所有字段
fields = [fields[0] for fields in cursor.description]
print(fields)
打印如下:
['id', 'name', 'age', 'height', 'weight'] 
---将对应所有字段序列化,格式化
dic_rows = [dict(zip(fields, row)) for row in rows]
# print(dic_rows)
for row in dic_rows:
    print(row)

3、 增、删、改

3.1 增

cursor = conn.cursor()
sql = "insert into student(name, age) values('new_insert', 16)"
res = cursor.execute(sql)  
print(res)
---按之前的查来看应该会直接插入到表中,但是实际并没有,因为事务干扰,故需要提交事务 
conn.commit() ---提交事务

3.2 删

cursor = conn.cursor()
sql = "delete from student where id = 5"
res = cursor.execute(sql)  
conn.commit()  

3.3 改

cursor = conn.cursor()
sql = "update student set name='李九' where id=9"
res = cursor.execute(sql)
print(res)
conn.commit() 
所有的 "写" 操作都需要提交事务才会写入数据库

二、事务

1、事务的特性

  • 原子性(atomicity ) :一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做;
  • 一 致性(consistency ) : 事务必须是使数据库从一个一致性状态变到另一个致性状态。一致性与原子性是密切相关的 ;
  • 隔离性 (isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰 ;
  • 持久性(durability ):持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的(数据写入完毕,无法再改变)。

2、操作

conn.close() 关闭连接
conn.commit() 提交事务
conn.rollback() 回滚撤销

三、 SQL注入

SQL注入即是指攻击者可以在WEB应用程序中事先定义好的询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询从而进一步得到相应的数据信息。具体略。

四、结语

最是仓皇辞庙日,教坊犹奏别离歌,垂泪对宫娥。----李煜《破阵子·四十年来家国》
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
24天前
|
SQL 关系型数据库 MySQL
面试准备-MySQL
面试准备-MySQL
|
4月前
|
自然语言处理 搜索推荐 关系型数据库
mysql面试
mysql面试
|
12月前
|
关系型数据库 MySQL 索引
MySQL初级篇(二)
MySQL初级篇(二)
|
12月前
|
关系型数据库 MySQL
MySQL初级篇(三)
MySQL初级篇(三)
|
12月前
|
存储 NoSQL 关系型数据库
MySQL初级篇(一)
MySQL初级篇(一)
|
SQL 关系型数据库 MySQL
【MySQL】MySQL触发器入门宝典,助力MySQL初学者打下基本功
【MySQL】MySQL触发器入门宝典,助力MySQL初学者打下基本功
84 0
|
SQL 存储 关系型数据库
MySQL常用基础 - 小白必看(二)
概念:是一个数据定义语言 该语言部分包括: 1、对数据库的常用操作 2、对表结构的常用操作
104 0
MySQL常用基础 - 小白必看(二)
|
存储 SQL NoSQL
MySQL初级之【1.MySQL认识与安装配置】
MySQL初级之【1.MySQL认识与安装配置】
126 0
MySQL初级之【1.MySQL认识与安装配置】
|
SQL 存储 Oracle
MySQL必知必会(初级篇)
MySQL必知必会(初级篇)
107 0
MySQL必知必会(初级篇)
|
存储 SQL 缓存
MySQL面试问题总结
MySQL面试经验总结
121 0