【Python】操作数据库MySQL

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 本篇内容介绍了“怎么用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语言」,也是在依葫芦画瓢,有错误之处,还望不吝赐教。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
DataWorks 关系型数据库 调度
DataWorks操作报错合集之DataWorks 数据库同步任务中,如果遇到表情符报错的现象,怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
18 0
|
6天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
23 0
|
4天前
|
Java 关系型数据库 数据库连接
【C 言专栏】C 语言与数据库的连接与操作
【5月更文挑战第2天】本文探讨了C语言如何连接和操作数据库,介绍了数据库连接的基本原理,如通过ODBC、JDBC或原生接口与数据库交互。文章详细阐述了使用ODBC连接的步骤,并列举了C语言在数据库操作中的常见任务,强调了错误处理、数据类型匹配和性能优化的重要性。通过实际案例,展示了在学生信息管理系统中应用C语言与数据库交互的过程。本文旨在帮助读者更好地理解和应用C语言进行数据库管理。
|
5天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
5天前
|
SQL 关系型数据库 MySQL
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
|
5天前
|
SQL 关系型数据库 MySQL
【MySQL-1】理解关系型数据库&数据的数据模型
【MySQL-1】理解关系型数据库&数据的数据模型
|
5天前
|
SQL 存储 关系型数据库
【MySQL】DDL的表操作详解:创建&查询&修改&删除
【MySQL】DDL的表操作详解:创建&查询&修改&删除
|
6天前
|
XML Java 数据库连接
Springboot整合mybatisPlus操作数据库
MyBatis-Plus是MyBatis的增强工具,简化开发、提高效率。它提供官网文档,便于集成到SpringBoot项目中。集成步骤包括添加mybatis-plus-boot-starter和数据库驱动依赖,配置数据源,扫描Mapper类包。Mapper接口继承BaseMapper即可使用基本的CRUD操作。示例代码展示了Service层的增删改查实现。MyBatisPlus还支持逻辑删除、自动填充等功能,同时可与Mybatis XML配合使用,通过调整配置指定XML映射文件位置。
|
6天前
|
关系型数据库 MySQL 数据库
Docker数据库Mysql
Docker数据库Mysql
|
6天前
|
关系型数据库 MySQL Go
数据库的事务操作
数据库的事务操作