如何使用 Python 连接 MySQL 数据库?什么是 ORM(对象关系映射),如何使用

数据库是现代软件开发中的核心部分,而 Python 作为一种流行的编程语言,广泛应用于数据处理和分析工作。通常我们需要通过 Python 连接数据库并执行一些常见的操作,如插入、查询、更新和删除数据。在实际开发中,MySQL 是非常常用的一种数据库管理系统。

本文将介绍如何使用 Python 连接 MySQL 数据库,并解释如何通过 ORM(对象关系映射)这种方式来简化数据库操作,提升开发效率。
在这里插入图片描述

一、MySQL 数据库简介

1.1 什么是 MySQL?

MySQL 是一种开源的关系型数据库管理系统(RDBMS),使用结构化查询语言(SQL)进行数据库操作。它支持多用户、多线程,可以处理大规模的数据集。MySQL 在许多应用场景中都得到了广泛使用,特别是在 Web 开发中。

特点

  • 开源,支持多种操作系统。
  • 支持大规模数据存储和快速数据访问。
  • 具有强大的安全性和灵活性。
  • 拥有广泛的社区支持和丰富的文档资源。

1.2 数据库的基本操作

在数据库中,数据通常以表的形式存储。每个表由若干行(记录)和列(字段)组成,表之间可以通过外键建立联系。SQL 提供了对这些表进行操作的标准语句,主要包括:

  • 插入:将数据插入表中。
  • 查询:从表中获取数据。
  • 更新:修改表中的数据。
  • 删除:删除表中的数据。

二、使用 Python 连接 MySQL 数据库

在 Python 中,我们可以使用多种库来连接 MySQL 数据库。常用的库包括 MySQL ConnectorPyMySQLSQLAlchemy 等。下面以 MySQL Connector 为例,详细讲解如何连接 MySQL 数据库并执行基本的数据库操作。

2.1 安装 MySQL Connector

MySQL Connector 是官方提供的一个用于连接 MySQL 数据库的 Python 库。在安装这个库之前,确保已经安装了 Python 和 MySQL 数据库。如果还没有安装,可以通过以下命令进行安装:

pip install mysql-connector-python

2.2 连接数据库

要连接 MySQL 数据库,首先需要提供一些必要的配置信息,如数据库的地址、用户名、密码等。通过 mysql.connector 模块中的 connect 方法,我们可以创建与数据库的连接。

import mysql.connector# 连接到 MySQL 数据库
db_connection = mysql.connector.connect(host="localhost",   # 数据库主机地址user="yourusername", # 用户名password="yourpassword", # 密码database="yourdatabase"  # 数据库名称
)# 检查连接是否成功
if db_connection.is_connected():print("成功连接到数据库")

2.3 执行 SQL 查询

建立连接后,接下来我们可以使用 SQL 语句对数据库进行操作。为了执行 SQL 语句,我们需要创建一个 游标对象(cursor)。游标用于执行 SQL 语句,并在必要时返回结果。

# 创建游标对象
cursor = db_connection.cursor()# 执行 SQL 查询
cursor.execute("SELECT * FROM users")# 获取查询结果
result = cursor.fetchall()# 输出结果
for row in result:print(row)

2.4 插入数据

通过 execute 方法可以执行各种 SQL 语句,比如插入数据。以下是一个插入数据的示例:

# 插入数据
sql = "INSERT INTO users (name, email) VALUES (%s, %s)"
values = ("John", "john@example.com")cursor.execute(sql, values)# 提交事务
db_connection.commit()print(f"插入了 {cursor.rowcount} 条数据")

2.5 更新和删除数据

更新和删除操作与插入数据的方式类似。我们只需要修改 SQL 语句即可:

  • 更新数据
sql = "UPDATE users SET email = %s WHERE name = %s"
values = ("newemail@example.com", "John")cursor.execute(sql, values)
db_connection.commit()print(f"更新了 {cursor.rowcount} 条数据")
  • 删除数据
sql = "DELETE FROM users WHERE name = %s"
values = ("John",)cursor.execute(sql, values)
db_connection.commit()print(f"删除了 {cursor.rowcount} 条数据")

2.6 关闭连接

在完成数据库操作后,记得关闭游标和数据库连接:

# 关闭游标
cursor.close()# 关闭数据库连接
db_connection.close()

三、什么是 ORM(对象关系映射)?

在传统的数据库操作中,开发者需要编写大量的 SQL 语句,并手动将数据从关系型数据库的表映射到 Python 中的对象。这个过程不仅繁琐,还容易出错。因此,为了简化数据库操作,ORM(对象关系映射)技术应运而生。

3.1 ORM 的定义

ORM(Object-Relational Mapping,对象关系映射)是一种将编程语言中的对象与关系型数据库中的表相互映射的技术。ORM 使得开发者无需直接编写 SQL 语句,而是通过操作编程语言中的对象,来实现对数据库的操作。

通过 ORM,表中的每一行数据可以映射为一个对象,表的列对应对象的属性,数据库的操作(插入、更新、删除等)可以通过对对象的方法调用来完成。

3.2 ORM 的优点

使用 ORM 的主要优点如下:

  • 提高开发效率:使用 ORM 后,开发者可以直接操作对象,而不需要编写繁琐的 SQL 语句。
  • 可维护性强:代码更简洁、清晰,减少了编写 SQL 语句的出错机会。
  • 数据库无关性:很多 ORM 框架支持多种数据库(如 MySQL、PostgreSQL、SQLite 等),因此项目迁移数据库时,只需要修改 ORM 配置即可。

3.3 Python 中常见的 ORM 库

Python 中最流行的 ORM 库是 SQLAlchemyDjango ORM。其中,SQLAlchemy 是一个独立的 ORM 库,适用于各种项目,而 Django ORM 则是 Django 框架内置的 ORM,适用于 Django 项目。

3.3.1 SQLAlchemy 示例

我们以 SQLAlchemy 为例,演示如何使用 ORM 来操作数据库。

首先,需要安装 SQLAlchemy:

pip install sqlalchemy

然后,我们可以定义数据库模型,模型类对应数据库中的表,模型的属性对应表的列。

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker# 创建数据库引擎
engine = create_engine('mysql+mysqlconnector://username:password@localhost:3306/yourdatabase')# 创建基类
Base = declarative_base()# 定义一个用户表的模型
class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True)name = Column(String(50))email = Column(String(100))# 创建表
Base.metadata.create_all(engine)# 创建会话
Session = sessionmaker(bind=engine)
session = Session()# 插入数据
new_user = User(name="Alice", email="alice@example.com")
session.add(new_user)
session.commit()# 查询数据
users = session.query(User).all()
for user in users:print(user.name, user.email)

通过 SQLAlchemy,插入、查询、更新、删除等操作都可以通过面向对象的方式来完成,而无需直接编写 SQL 语句。

3.3.2 Django ORM 示例

如果你使用 Django 框架开发 Web 应用,可以直接使用 Django 内置的 ORM。Django ORM 的基本用法与 SQLAlchemy 类似,也是通过定义模型类来操作数据库。

在 Django 中,你可以通过定义模型来创建数据库表,然后使用模型对象来操作数据。

# 在 models.py 中定义模型
from django.db import modelsclass User(models.Model):name = models.CharField(max_length=50)email = models.EmailField()# 创建表
python manage.py migrate# 插入数据
user = User(name="Bob", email="bob@example.com")
user.save()# 查询数据
users = User.objects.all()
for user in users:print(user.name, user.email)

Django ORM 提供了丰富的查询 API,可以很方便地对数据库进行增删改查操作。

四、总结

在本文中,我们介绍了如何使用 Python 连接 MySQL 数据库,并执行基本的数据库操作。通过 mysql.connector,我们可以轻松实现数据的插入、查询、更新和删除。此外,我们还讨论了 ORM(对象关系映射)技术,ORM 使得开发者能够通过操作对象来与

数据库交互,简化了数据库操作,提升了开发效率。

在实际项目中,选择何种方式与数据库交互需要根据具体的需求和项目规模。如果项目比较简单,可以直接使用 SQL 语句进行操作;而在更复杂的项目中,ORM 则能极大地提高开发效率和代码的可维护性。

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

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

相关文章

LeetCode[中等] 155. 最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int get…

线程知识点补充

我们之前: 主线程下来,调用了一个方法run方法,方法执行完后再继续往下走主线程。 咱们期望: 两个同时执行,交替执行。 一些核心概念说明: 一个程序写好是静态的,给他运行起来就是一个进程了…

java计算机毕设课设—土地档案管理系统(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式在最下方 java计算机毕设课设—土地档案管理系统(附源码、文章、相关截图、部署视频) 土地档案管理系统是一种将传统纸质档案进行数字化管理的软件。通过该系统,用户能够高效地进行土地档案的存储、查阅、修改和删除等操作…

unity3d入门教程八-飞机大战

unity3d入门教程八-飞机大战 19.2竖屏设置19.3主控脚本19.4制作子弹19.5制作飞机19.6制作怪物19.7击中目标19.8随机生成怪物19.9预制体怪物随机更换头像19.10怪物相关优化19.11游戏背景19.12游戏最终优化一、 HP显示二、怪物预制体三、分值显示四、背景音乐 19.2竖屏设置 切换到…

鸿蒙媒体开发系列08——AudioCapturer录制音频

如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。 1、概述 我们在鸿蒙媒体开发系列07——AVRecorder音频录制中我们了解到&#xff0c…

【后端开发】JavaEE初阶—线程的理解和编程实现

前言: 🌟🌟本期讲解多线程的知识哟~~~,希望能帮到屏幕前的你。 🌈上期博客在这里:【后端开发】JavaEE初阶——计算机是如何工作的???-CSDN博客 🌈感兴趣的小伙…

Linux介绍;Linux安装;Linux常见错误

一,Linux简介 1.1操作系统 指人和计算机硬件沟通交流的平台。 1.2常见的操作系统 1.21 PC windows MacOS Linux 1.22 移动端 Android IOS 鸿蒙 塞班 1.3什么是Linux Linux,一般指GNU/Linux(单独的Linux内核并不可直接使用&…

【漏洞复现】泛微OA E-Office jx2_config.ini 敏感信息泄漏漏洞

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

buucft hashcat

使用文本编辑器打开时乱码 使用010editor打开发现时xml文档 拷贝到kali,使用binwalk查看,发现时xml文档,改后缀名为ppt。打开发现有密码 Accent OFFICE Password Recovery 64位-Office密码恢复软件 v20.09 免费版 - 下载吧 试试这个Accent O…

飞腾计算模块RapidIO性能测试

1、背景介绍 飞腾计算模块采用FT2000 64核处理器,搭配Tsi721 PCIE转RapidIO芯片,实现飞腾平台下的SRIO数据通信。操作系统采用麒麟信安,内核版本4.19.90. 2、驱动加载 驱动加载部分类似之前写过的X86平台下的RapidIO驱动加载,具…

Ngnix 在windows上的简单使用

安装 下载链接: nginx: download 选择页面中 Stable version 下的windows版本直接下载解压到本地。 运行nginx: 解压到本地后,结构如图: cmd 进入到上图的根目录,运行 start nginx ,即可开启。 打开 http://localhost 进行查看,如果正常打开nginx的测试页面,则说…

借10万块,年化利息明明是3.8%,为啥就变成了2.07%?

今天咱们来聊一聊贷款的奥秘,特别是那个令人爱恨交织的年利率。听起来直观得很,3.8%就像是每年给银行支付贷款总额的3.8%作为利息,但实际上,这里面的学问挺深的。有时候,名义上的3.8%年化,最终一算&#xf…

电子元器件之MOS管,附上几个常用MOS管电路和仿真。

MOS管是一种常用的电子元器件。 1.MOS管的类别 MOSFET简称MOS,是一种绝缘栅型场效应管。按照类别可以分为增强型mos管和耗尽型mos管。 导电沟道的形成方式‌ 增强型MOS管:在没有外加电压时,源极和漏极之间没有导电沟道存在。只有当栅极电…

打开Anaconda Navigator没反应,卡在Initializing...的解决方案

一、问题描述 打开Anaconda Navigator时,一直卡在Initializing...没反应,如下图所示: 二、解决方案 进入Anaconda安装目录下找到并打开文件夹attribution(笔者Anaconda安装目录在D盘下,读者可自行查找自己安装目录中…

基于stm32物联网身体健康检测系统

在当今社会,由于经济的发展带来了人们生活水平不断提高,但是人们的健康问题却越来越突出了,各种各样的亚健康随处可在,失眠、抑郁、焦虑症,高血压、高血糖等等侵袭着人们的健康,人们对健康的关注达到了一个…

超越极限!Qwen2.5 助力多领域智能应用

前沿科技速递🚀 近日,Qwen2.5 系列重磅发布,成为开源语言模型领域的又一里程碑。作为一款全新的通用语言模型,Qwen2.5 在支持自然语言处理的基础上,还在编程、数学等领域进行了专项优化。Qwen2.5 模型支持长文本生成&a…

2024年中国研究生数学建模竞赛D题“大数据驱动的地理综合问题”全析全解

问题一解答:降水量与土地利用/土地覆被类型的时空演化特征描述 1. 降水量的描述性统计方法 降水量是一个连续变化的变量,可以通过以下几种描述性统计方法进行时空演化特征的总结: 平均降水量:统计中国范围内1990至2020年各年份的…

初步认识C++模版

前言 在C语言中,我们知道函数的形参需要指定类型,但是在C中,我们可以模版实现各种类型参数的通用函数。 1. 泛型编程 我们通过函数重载实现多种类型的同一作用的函数。如交换函数: void Swap(int& left, int& right) …

linux下将txt转成xlsx

在Linux环境下,可以使用Python的pandas库将TXT文件转换为Excel文件。以下是一个简单的示例代码: 首先,确保安装了pandas和openpyxl库: pip install pandas openpyxl 然后,使用以下Python脚本将TXT文件转换为Excel文件…

基于单片机汽车驾驶防瞌睡防疲劳报警器自动熄火设计

文章目录 前言资料获取设计介绍功能介绍设计程序具体实现截图设计获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对…