【Python】操作数据库MySQL

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 本篇内容介绍了“怎么用Python操作MySQL”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让我带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!


🏮1 介绍


🎈1.1 什么是PyMySQL


PyMySQL 是在Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用 mysqldb
PyMySQL的Github主页地址:https://github.com/PyMySQL/PyMySQL
PyMySQL的最新版本文档地址:https://pymysql.readthedocs.io/en/latest/


🎈1.2 查看pip的版本


针对Mac用户,只需要打开终端或者iTerm

Aion.Local$pip3--versionpip22.2.2from/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pip (python3.10)



当然,你也可以使用其他命令查看当前机器的pip版本,pip3 -Vpip3 --help都是一些常用命令,希望记住。


🎈1.3 升级pip

有些时候,版本低了,可以使用下面的命令升级。

Aion.Local$pip3install--upgradepipRequirementalreadysatisfied: pipin/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (22.2.1)
CollectingpipUsingcachedpip-22.2.2-py3-none-any.whl (2.0MB)
Installingcollectedpackages: pipAttemptinguninstall: pipFoundexistinginstallation: pip22.2.1Uninstallingpip-22.2.1:
Successfullyuninstalledpip-22.2.1Successfullyinstalledpip-22.2.2



升级pip也是很简单,一般情况下,使用命令行升级,多数都是使用--upgrade命令来升级。


🎈1.4 使用pip安装pymysql


安装第三方的mysql,我们只需要按照下面的命令执行就可以了。

Aion.Local$pip3installpymysqlCollectingpymysqlDownloadingPyMySQL-1.0.2-py3-none-any.whl (43kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━43.8/43.8kB35.4kB/seta0:00:00Installingcollectedpackages: pymysqlSuccessfullyinstalledpymysql-1.0.2



🏮 2 python使用PyMySQL驱动操作MySQL


🎈 2.1 创建实验表(users)


首先,我们需要进入我们自己的数据,在我们自己的数据库创建一张实验需要的表。

DROPTABLE IF EXISTS `users`;CREATETABLE `users` (    `id` INT(11)NOTNULL AUTO_INCREMENT COMMENT 'ID编号', `username` VARCHAR(128)NOTNULL COMMENT '账号/用户名',    `email` VARCHAR(255) COLLATE utf8_bin NOTNULL COMMENT '邮箱',    `password` VARCHAR(255) COLLATE utf8_bin NOTNULL COMMENT '密码',    PRIMARY KEY (`id`)) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=1 COMMENT '用户表';



🎈 2.2 使用PyMySQL连接数据库


连接数据库的参数有很多,我们使用的时候基本上就常用的几个就可以了。具体的连接参数如下:

pymysql.connections.Connection(*, user=None, password='', host=None, database=None, unix_socket=None, port=0, charset='', sql_mode=None, read_default_file=None, conv=None, use_unicode=True, client_flag=0, cursorclass=<class 'pymysql.cursors.Cursor'>, init_command=None, connect_timeout=10, read_default_group=None, autocommit=False, local_infile=False, max_allowed_packet=16777216, defer_connect=False, auth_plugin_map=None, read_timeout=None, write_timeout=None, bind_address=None, binary_prefix=False, program_name=None, server_public_key=None, ssl=None, ssl_ca=None, ssl_cert=None, ssl_disabled=None, ssl_key=None, ssl_verify_cert=None, ssl_verify_identity=None, compress=None, named_pipe=None, passwd=None, db=None)



我们常用的参数如下:

import pymysql.cursors# 连接到数据库
connection = pymysql.connect(host='localhost',                             user='python_study_user',                             password='xxxxxx',                             database='python_study',                             charset='utf8',                             cursorclass=pymysql.cursors.DictCursor)



连接的参数说明:


  • host:数据库服务器的主机
  • user:登录的用户名
  • password:登录的数据库密码
  • database:登录的数据库,如果是None 表示不使用特定的数据库
  • charset:编码字符集
  • cursorclass:自定义光标类


其他参数请参考官方提供的文档:connections


🎈 2.2 操作数据库|INSERT

如何插入数据呢,插入数据如何提交事务,下面跟着我的注释一点点来看。

with connection.cursor()as cursor:    # 插入一条记录
    sql ="INSERT INTO `users` (`username`, `email`, `password`) VALUES (%s, %s)"    cursor.execute(sql,('Aion.Liu','Aion.Liu@gmail.com','Aion!@#QAZ_0808'))    # 手工提交.
    connection.commit()



🎈 2.3 操作数据库|SELECT

如何插入数据呢,继续跟着我来学习。

with connection.cursor()as cursor:    # 读取数据
    sql ="SELECT `id`, `username`, `password` FROM `users` WHERE `email`=%s"    cursor.execute(sql,('Aion.Liu@gmail.com',))    result = cursor.fetchone()    print(result)# 打印的结果
{'id':1,'username''Aion.Liu','password':'Aion!@#QAZ_0808'}


当然,可以多执行几次,看下效果:

下面,我们看下数据库的数据:


🎈 2.4 遇到的问题和解决方法


Q1:由于我升级了Python的版本,也升级了pip的版本,导致在执行过程中,出现找不到 pymysql 模块

import pymysql.cursorsModuleNotFoundError: No module named 'pymysql'


解决方法:

# 👇️ 没有PyMySQL,需要安装

pip install PyMySQL


# 👇️ python 3 中没有PyMySQL,需要安装(pip3.10 依赖)

pip3 install PyMySQL


# 👇️ 没有权限错误

sudo pip3 install PyMySQL


# 👇️ 环境中没有pip

python -m pip install PyMySQL


# 👇️ python 3 中没有PyMySQL,需要安装(pip3.10 依赖)

python3 -m pip install PyMySQL


# 👇️ for Anaconda 环境

conda install -c anaconda pymysql


总结

刚开始学习「Python语言」,也是在依葫芦画瓢,有错误之处,还望不吝赐教。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
14 3
|
4天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
20 3
|
4天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE &#39;log_%&#39;;`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
25 2
|
17天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
123 15
|
10天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
SQL Java 数据库连接
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
196 0
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
|
SQL 关系型数据库 MySQL
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
146 0
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
|
存储 SQL 关系型数据库
MySQL---数据库从入门走向大神系列(五)-存储过程
MySQL---数据库从入门走向大神系列(五)-存储过程
144 0
MySQL---数据库从入门走向大神系列(五)-存储过程
|
数据库
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系(3)
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系
211 0
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系(3)
|
SQL 关系型数据库 MySQL
MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查
MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查
216 0
MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查