Python与MySQL数据库的交互

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Python与MySQL数据库的交互

1 安装pymysql


在Python中,如果想要将数据存储到MySQL中,就需要借助pymysql模块来操作。可直接通过pip或者conda命令安装

image.png


2 用Python连接数据库


注意下方是本地数据库连接操作,注意sql语句结尾要加分号。

import pymysql
db=pymysql.connect(host='localhost',port=3306,user='root',password='test123456',database='python',charset='utf8')
#host参数代表MYSQL服务器地址
#port代表所使用的端口
#user代表MYSQL数据库的用户名
#password代表数据库的登录密码
#database代表要连接的数据库名称(这里名称为Python的数据库是之前创建的)
#charset代表编码方式,这里指定的是中文编码方式utf8
cursor = db.cursor()  
#得到一个可以执行SQL语句并且将结果作为字典返回的游标
#cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 定义要执行的SQL语句
sql = """
    CREATE TABLE USER1 (
    id INT auto_increment PRIMARY KEY ,
    name CHAR(10) NOT NULL UNIQUE,
    age TINYINT NOT NULL
    )ENGINE=innodb DEFAULT CHARSET=utf8;  
"""
#注意:charset='utf8' 不能写成utf-8
# 执行SQL语句
cursor.execute(sql)
# 关闭光标对象
cursor.close()
# 关闭数据库连接
db.close()


执行上述语句,生成格名为user1的表,如下:

image.png


3 Sql语句


在MySQL中有多种数据类型可以有存放数值,不同类型存放的数值范围或者形式不同的。


但是初学者不需要过分关注这些数据类型,熟悉常见操作即可。


3.1创建表

创建数据库与数据表一般通过数据库管理平台phpmyadmin、Navicat等工具皆可实现,这种方式不需要输入复杂的SQL语句。


CRATE TABLE语句用于创建数据库中的表。表由行和列组成,每个表都必须有个表名。

CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);
#column_name 参数规定表中列的名称。
#data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。
#size 参数规定表中列的最大长度。


第二部分测试Python连接数据库的代码就是创建一张user数据表


3.2 插入数据

INSERT INTO 语句可以有两种编写形式。

第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

INSERT INTO table_name
VALUES (value1,value2,value3,...);


第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);


示例:

# 插入操作
id='202208'
name='Bob'
age='25'
sql='INSERT INTO user1(id,name,age) VALUE(%s,%s,%s)'
cursor.execute(sql,(id,name,age))
db.commit()
#commit函数是更新数据表的固定写法(commit的中文意思就是提交)。这里增加了一行数据,已经改变了数据表的结构,所以必须用db.commit()来提交这个修改
cursor.close()
db.close()


重点看下最后一行代码execute()的函数,第一个参数就是我们刚才写的SQL语句,我们选择甩格式化符%s来实现;第二个参数用来把具体的内容传到各个%s的位置上。

image.png


3.3 更新数据

UPDATE 语句用于更新表中的记录。WHERE 子句用于提取那些满足指定条件的记录。

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;


示例:将刚才插入行中的age改为66

cursor=db.cursor()
sql="""
  UPDATE user1
  SET age=%s
  WHERE name=%s
"""
cursor.execute(sql,('66','Bob'))
db.commit()
cursor.close()

image.png


3.4 删除数据

DELETE 语句用于删除表中的行。WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除!

DELETE FROM table_name
WHERE some_column=some_value;


删除操作相对简单,直接使用delete语句即可,仍然需要使用db的commit()方法才能生效。


3.5 查询数据

学完插入、修改和删除操作,还剩下一个非常重要的操作,那就是查询。

SELECT 语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集。

SELECT column_name,column_name
FROM table_name;
#  
SELECT * FROM table_name;


同样,我们可以在后面添加where子句来实现对数据的约束。


4 事务


4.1 概述

事务(transaction)是作为单个逻辑单元执行的一系列操作。多个操作作为一个整体向系统提交,要么都执行,要么都不执行。


通俗讲:在事务中的增删查改等操作,要么都成功,要么都失败。


4.2 特性

  • 原子性

事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用,原子是最小且不可分割的单元)


  • 一致性

事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。


  • 隔离性

由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。(并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的)事务识别数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是第二个事务修改它之后的状态,事务不会识别中间状态的数据。

这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。


  • 持久性

事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。


4.3 事务实现示例

还是用之前的插入操作举例子,通过引入事务执行失败后,则调用rollback()执行数据回滚,相当于什么都没有发生过。

# 引入事务机制的插入操作
cursor=db.cursor()
id='202209'
name='Daniel'
age='30'
sql='INSERT INTO user1(id,name,age) VALUE(%s,%s,%s)'
try:
    cursor.execute(sql,(id,name,age))
    db.commit()
except:
    db.rollback()
cursor.close()


效果:

image.png

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
存储 SQL 关系型数据库
PHP与数据库交互:从基础到进阶
【10月更文挑战第9天】在编程的世界里,数据是流动的血液,而数据库则是存储这些珍贵资源的心脏。PHP作为一门流行的服务器端脚本语言,其与数据库的交互能力至关重要。本文将带你从PHP与数据库的基本连接开始,逐步深入到复杂查询的编写和优化,以及如何使用PHP处理数据库结果。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技巧,让你在PHP和数据库交互的道路上更加从容不迫。
|
3月前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
147 68
|
2月前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
375 15
|
3月前
|
存储 SQL API
探索后端开发:构建高效API与数据库交互
【10月更文挑战第36天】在数字化时代,后端开发是连接用户界面和数据存储的桥梁。本文深入探讨如何设计高效的API以及如何实现API与数据库之间的无缝交互,确保数据的一致性和高性能。我们将从基础概念出发,逐步深入到实战技巧,为读者提供一个清晰的后端开发路线图。
|
2月前
|
SQL 关系型数据库 MySQL
PHP与MySQL的高效交互:从基础到实践####
本文深入探讨了PHP与MySQL数据库之间的高效交互技术,涵盖了从基础连接到高级查询优化的全过程。不同于传统的摘要概述,这里我们直接以一段精简代码示例作为引子,展示如何在PHP中实现与MySQL的快速连接与简单查询,随后文章将围绕这一核心,逐步展开详细讲解,旨在为读者提供一个从入门到精通的实战指南。 ```php <?php // 数据库配置信息 $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "test_db"; // 创建连接 $conn = new mysqli($se
69 0
|
4月前
|
关系型数据库 MySQL 数据处理
探索Python中的异步编程:从asyncio到异步数据库操作
在这个快节奏的技术世界里,效率和性能是关键。本文将带你深入Python的异步编程世界,从基础的asyncio库开始,逐步探索到异步数据库操作的高级应用。我们将一起揭开异步编程的神秘面纱,探索它如何帮助我们提升应用程序的性能和响应速度。
|
4月前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
72 4
|
4月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
93 1
|
开发工具 开发者 Python
Python 的交互模式|学习笔记
快速学习 Python 的交互模式
145 0
|
2月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!

热门文章

最新文章