Python 进阶(一):Python连接MySQL数据库和CRUD操作

news2025/1/15 12:43:37

MySQL数据库的连接和CRUD操作

  • 前言
  • Python连接MySQL的五种方式
  • 1. 安装mysql-connector-python
  • 2. 连接数据库
  • 3. 查询数据
  • 4. 插入数据
  • 5. 更新数据
  • 6. 删除数据

前言

本文基于MySQL8.x版本的学习,python版本基于当前最新的3.x,windows操作系统下mysql的安装流程,可参考我之前的文章:Windows MySQL8.0免安装版,配置多个安装实例

Python连接MySQL的五种方式

在Python中,您可以使用多种方式来操作MySQL数据库。以下是一些常见的方式:

  1. mysql-connector-python:这是MySQL官方提供的官方驱动程序,可以通过pip安装。它提供了mysql.connector模块,用于连接和操作MySQL数据库。

  2. PyMySQL:PyMySQL是一个纯Python编写的MySQL客户端库,可以通过pip安装。它提供了与MySQL数据库交互所需的各种功能。

  3. mysqlclient:mysqlclient是Python的MySQL数据库驱动程序,可以通过pip安装。它是基于C语言的MySQL客户端库的绑定,提供了高性能的操作。

  4. SQLAlchemy:SQLAlchemy是一个流行的Python SQL工具和对象关系映射(ORM)库,支持多种数据库,包括MySQL。它提供了一种更高级的抽象来操作数据库。

  5. peewee
    peewee 是一个流行的 ORM 框架,实现了对象与数据库表的映射,兼容多种数据库,我们无需知道原生 SQL,只要了解面向对象的思想就可以简单、快速的操作相应数据库,支持 Python3。

在Python 3中,可以使用mysql-connector-python库来连接和进行CRUD(创建、读取、更新和删除)操作。以下是Python 3和MySQL 8.x版本的连接和基本操作的示例代码:

1. 安装mysql-connector-python

在使用mysql-connector-python库之前,需要先安装它。可以使用以下命令来安装:

pip install mysql-connector-python

在这里插入图片描述

2. 连接数据库

  1. 安装好mysql数据库后,执行创建数据库命令
CREATE DATABASE `py_conn_test` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';
  1. 执行创建数据表操作
# 书目表
CREATE TABLE `py_conn_test`.`book`  (
  `id` int UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NULL COMMENT '书名',
  `author` varchar(255) NULL COMMENT '作者',
  `price` float(10, 2) NULL COMMENT '书名价格',
  `edition` int NULL COMMENT '版次',
  PRIMARY KEY (`id`)
);
import mysql.connector

# 创建数据库连接
conn = mysql.connector.connect(
    host="192.168.0.146",# 数据库主机ip,或者localhost表示当前主机
    port=4706, # 端口,不写此参数默认3306
    user="zhouquan", # 数据库账户
    password="zhouquan@123", # 数据库密码
    database="py_conn_test" # 数据库名,上面语句创建的mysql数据库名
)

3. 查询数据

import mysql.connector

# 创建数据库连接
conn = mysql.connector.connect(
    host="192.168.0.146",
    port=4706,
    user="zhouquan",
    password="zhouquan@123",
    database="py_conn_test"

)

# 创建游标对象
cursor = conn.cursor()

# 执行SQL语句
cursor.execute("SELECT * FROM book")

# 获取查询结果
results = cursor.fetchall()

# 打印结果
for row in results:
    print(row)

# 关闭游标和连接
cursor.close()
conn.close()

在上述代码中,我们使用mysql.connector库来连接MySQL数据库。需要提供主机名、端口号、用户名、密码和数据库名来建立连接。然后创建一个游标对象,该对象用于执行SQL语句。在示例中,我们执行了一个简单的SELECT语句,并使用fetchall()方法获取查询结果。最后关闭游标和连接对象。
在这里插入图片描述

4. 插入数据

import mysql.connector

# 创建数据库连接
conn = mysql.connector.connect(
    host="192.168.0.146",
    port=4706,
    user="root",
    password="数据库密码",
    database="py_conn_test"

)

# 创建游标对象
cursor = conn.cursor()

# 插入数据
sql = "INSERT INTO `py_conn_test`.`book`( `title`, `author`, `price`, `edition`) VALUES ( %s,%s,%s,%s);"
values = ("动物农场", "乔治.奥威尔", 15.5, 3)
cursor.execute(sql, values)

# 提交事务
conn.commit()

# 关闭游标和连接
cursor.close()
conn.close()

在插入数据的示例中,我们使用execute()方法执行INSERT语句,并将要插入的值作为参数传递给execute()方法。然后使用commit()方法提交事务以保存更改。
在这里插入图片描述
在这里插入图片描述

5. 更新数据

在更新的示例中,我们使用execute()方法执行UPDATE语句,并传递相应的参数。最后,使用commit()方法提交事务以保存更改。

import mysql.connector

# 创建数据库连接
conn = mysql.connector.connect(
    host="192.168.0.146",
    port=4706,
    user="zhouquan",
    password="zhouquan@123",
    database="py_conn_test"

)

# 创建游标对象
cursor = conn.cursor()

# 更新数据 当前数据库数据:2	动物农场	乔治.奥威尔	15.50	3
sql = "UPDATE `book` SET title = %s WHERE id = %s"
values = ("1984", 2)
cursor.execute(sql, values)
conn.commit()

# 提交事务
conn.commit()

# 关闭游标和连接
cursor.close()
conn.close()

在这里插入图片描述
在这里插入图片描述

6. 删除数据

在删除数据的示例中,我们使用execute()方法执行DELETE语句,并传递相应的参数。最后,使用commit()方法提交事务以保存更改。

import mysql.connector

# 创建数据库连接
conn = mysql.connector.connect(
    host="192.168.0.146",
    port=4706,
    user="zhouquan",
    password="zhouquan@123",
    database="py_conn_test"

)

# 创建游标对象
cursor = conn.cursor()

# 删除数据
sql = "DELETE FROM book WHERE id = %s"
value = (2,)
cursor.execute(sql, value)
conn.commit()

# 提交事务
conn.commit()

# 关闭游标和连接
cursor.close()
conn.close()

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对骨架进行去毛刺处理

文章目录 0. 效果1. 基本内容2. 参考 0. 效果 红色:端点 绿色:节点 蓝色线条:毛刺(根据长度定义) 1. 基本内容 本文中的端点和节点的获取是依据论文《一种有效的骨架毛刺去除算法》中的内容提取的。 端点&#…

Chromium多进程架构,你知道多少?

一、前言 国内外主流的浏览器,大多采用的是谷歌的Chromium 浏览器内核,Chromium是一个多进程多线程架构的Web引擎,很多应用和底层开发者希望了解Chromium中的进程和线程的种类和用途,以便能利用相关信息提升应用的性能。为此&…

C++【一棵红黑树封装 set 和 map】

✨个人主页: 北 海 🎉所属专栏: C修行之路 🎃操作环境: Visual Studio 2019 版本 16.11.17 文章目录 🌇前言🏙️正文1、红黑树的完善1.1、修改默认成员函数1.1.1、默认构造1.1.2、析构 ---> …

nodejs 跳蚤市场网站-计算机毕设 附源码83381

nodejs 跳蚤市场网站 目 录 摘要 1 绪论 1.1选题背景与意义 1.2国内外发展情况 1.3node.js主要功能 1.4node.js功能模块 1.5论文结构与章节安排 2跳蚤市场网站系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2.3.3数据删除流程 …

django公交线路查询系统-计算机毕设 附源码85021

django公交线路查询系统 摘 要 本论文主要论述了如何使用django框架开发一个公交线路查询系统,本系统将严格按照软件开发流程进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述该系统的当前背景以及系统开发的目的&…

售后商品破损回复话术

想必客服们最关注且最头疼的问题便是售后问题了吧,特别是一些商品破损类的问题,是客服们最不想面对的问题之一了,为此小编整理了一份商品破损回复话术提供给大家,希望能对大家有所帮助哦~ 一、询问与核实 1.对不起,由…

Linux系统编程:进程的状态和进程优先级

目录 一. Linux操作系统进程的状态 二. 进程状态的标识 2.1 运行状态R 2.2 睡眠状态S 2.3 前台进程和后台进程 2.4 磁盘睡眠状态D 2.5 暂停状态和调试状态T 2.6 僵尸状态Z 2.7 终止状态X 2.8 孤儿进程 三. 进程优先级 3.1 什么是优先级 3.2 进程优先级的修改和进…

一文带你了解Java的I O机制

Java I/O 一:故事背景二:什么是Java的I\O机制2.1 流2.1.2 字节流和字符流的区别2.1.3 输入流和输出流的区别 2.2 文件 I/O2.3 缓冲 I/O2.4 标准 输入/输出2.5 对象序列化与反序列化2.6 N I/O 三:画图表示Java I/O机制3.1 输入输入系统流程示意…

vue中响应式的数组方法

vue响应式的数组方法 1、push 在数组中追加元素 <div id"app"><ul><li v-for"item in arr">{{item}}</li></ul><button click "change">按钮</button> </div> <script src"js/vue.js&…

普通单目相机标定——准备工作

前言 这里我们还是以普通相机为例(非鱼眼相机)来进行后续的相关标定操作,再回顾下相机的成像模型如下所示。 已知相机内参(fx,fy,u0,v0),畸变系数[k1,k2,k3,p1,p2],相机外参[R|T]。世界坐标系中点Pw(Xw,Yw,Zw),投影至像素坐标系点p(u,v)的计算过程如下。 1)由世…

Linux基础_1

目录 一、用户登录 1、root用户 2、普通&#xff08;非特权&#xff09;用户 二、终端terminal 1、终端类型 2、查看当前的终端设备 三、交互式接口 1、概念&#xff1a;启动终端后&#xff0c;在终端设备附加一个交互式应用程序 2、类型 3、什么是Shell 4、各种She…

Python源码:用turtle画美国队长盾牌

解析&#xff1a; 美国队长盾牌结构分析&#xff1a; 有4个圆和一个五角星组成。 源码如下&#xff1a; import turtle as t #控制画笔的速度 t.speed(10) #画最外面的大圆 t.penup() t.goto(100,-235) t.pendown() t.color("red","red") t.begin_fill(…

iOS 实现多scheme 切换环境完整流程

文章目录 一、 添加configuration二、 添加scheme三、 设置scheme 和 configuration的对应关系四 、 本地配置文件五、 运行 前言 我们在开发中都要涉及到切换环境&#xff0c;很多小伙伴是通过宏定义的方式实现 切换环境的 &#xff0c; 这种方式不优雅&#xff0c;还可造成每…

MySQL基础篇(day02,复习自用)

MySQL第二天 基本的SELECT语句大小规范注释命名规则数据导入指令select语句练习 运算符代码练习 基本的SELECT语句 SQL 可以写在一行或者多行。为了提高可读性&#xff0c;各子句分行写&#xff0c;必要时使用缩进 每条命令以 ; 或 \g 或 \G 结束 关键字不能被缩写也不能分行 关…

中国开源,迈入“新生代”

提到中国开源&#xff0c;大家会想到什么&#xff1f; “追随者&#xff0c;而不是创造者”“国外一开源&#xff0c;国內就自主”“全球开源社区里的nobody”……如果你带着这些“刻板印象”&#xff0c;参加近两年国內的开源活动&#xff0c;极大可能会受到不小的震撼。 中国…

cglib动态代理 | 如何生成代理类、代理类内容解析

文章目录 简介一、cglib动态代理有什么特点CgLib动态代理&#xff1a;优点&#xff1a;缺点&#xff1a; 二、Cglib如何生成代理类生成代理类的具体代码&#xff1a;生成代理对象的具体代码&#xff1a; 三、代理类内容解析持久化代理类&#xff1a;代理类内容&#xff1a; Cgl…

数据指标体系建设

一、什么是数据指标体系&#xff1f; 指标体系是从不同维度梳理业务&#xff0c;把指标有系统的组织起来。简而言之&#xff0c;指标体系指标体系&#xff0c;所以一个指标不能叫指标体系&#xff0c;几个毫无关系的指标也不叫指标体系。指标体系就像是一个整体、一辆车&#…

MacOS Sonoma 14.0 (23A5276g) Beta2 带 OC 引导双分区黑苹果镜像

苹果今日向 Mac 电脑用户推送了 macOS 14 开发者预览版 Beta2 更新&#xff08;内部版本号&#xff1a;23A5276g&#xff09;&#xff0c;本次更新距离上次发布隔了 15 天。 镜像下载&#xff1a; 微信公众号&#xff1a; macOS Sonoma 14.0 (23A5276g) Beta2 带 OC 引导双分…

【人工智能】— 深度神经网络、卷积神经网络(CNN)、多卷积核、全连接、池化

【人工智能】— 深度神经网络、卷积神经网络&#xff08;CNN&#xff09;、多卷积核、全连接、池化 深度神经网络训练训练深度神经网络参数共享 卷积神经网络&#xff08;CNN&#xff09;卷积多卷积核卷积全连接最大池化卷积池化拉平向量激活函数优化小结 深度神经网络训练 Pr…

罗大佑、把午睡打造成领域驱动设计创新-UMLChina建模知识竞赛第4赛季第6轮

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题&#xff0c;即可获得本轮优胜。第4题为附加题&#xff0c;对错不影响优胜者的判定&am…