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

news/2024/11/8 9:25: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, # 端口,不写此参数默认3306user="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.ppmy.cn/news/547623.html

相关文章

linux删除用户出现user xxx is currently used by process xxx的解决方案

linux删除用户出现user xxx is currently used by process xxx的解决方案 当我们想要删除或更改某个用户名时发现user xxx is currently used by process xxx这个报错,错误的原因可能是因为创建user1再登录到user1后想要对这个用户名做出修改,于是通过s…

WARNING: Device for PV 0lQ0Gl-RBe5-fPrr-OKYB-whwD-qHPF-izvEES not found or rejected by a filter

挂载磁盘时,添加pv到vg 报错:提示如下: WARNING: Device for PV 0lQ0Gl-RBe5-fPrr-OKYB-whwD-qHPF-izvEES not found or rejected by a filter. Couldn’t find device with uuid 0lQ0Gl-RBe5-fPrr-OKYB-whwD-qHPF-izvEES. WARNING: Device …

PHP 从数组对象中取出数组提示:Undefined property: stdClass::$subject

是由于PHP增加严谨性,首先要加下判断数组值是否存在,然后在获取! if (isset($result->access_token)) { } $curl https://api.weixin.qq.com/sns/oauth2/access_token?appid.$this->app_id.&secret.$this->app_secret.&a…

一个策划转程序再到创业失败的小故事(一)

今天给大家介绍一个编程的励志故事我会分成三个阶段给大家发布! 培训 想到就要去做,我们楼下就有一个电脑培训中心。我告诉他们,我要学C#,问要多少钱?答案让我吃了一惊,“我们教不了”。“你们不是电脑培训…

Configuring L2 L3 EtherChannel with PAgP

EtherChannel:通过这个技术能够将多个物理端口绑定为一个逻辑端口通过多个端口绑定,能充分利用现有端口来增加带宽。Cisco交换机最多允许绑定8个端口。如果是快速以太网,总带宽可达1600Mbit/s。如果是Gbit以太网,总带宽可达16Gbit…

图 - 拓扑排序

拓扑排序(Topological Sort) 对一个 有向无环图 (Directed Acyclic Graph简称 DAG )G进行拓扑排序是将G中所有顶点排成一个线性序列使得图中任 意一对顶点u和v若 ∈E(G)则u在线性序列中出现在v之前 通常这样的线性序列称为满足拓扑次序(TopoiSicai Order)的序列简称 拓扑序列 …

javaweb医院预约项目

title: 1 在线预约案例 项目首页 学习目标: 熟悉jsp servlet ajax mysql 等 二阶段技术的应用,进一步熟悉前后端交互的流程,培养javaweb方面的编程思想 需求文档 开发文档 准备数据库 // 数据字典表 CREATE TABLE h_type (tid INT(11) NOT N…