当前位置:首页 > 文章列表 > 文章 > python教程 > Python SQLAlchemy 实战秘籍:从新手到专家

Python SQLAlchemy 实战秘籍:从新手到专家

来源:编程网 2024-03-17 08:45:26 0浏览 收藏

SQLAlchemy 是一款 Python 中强大的对象关系映射 (ORM) 工具,可轻松地将 Python 对象映射到数据库表。通过简单的 Python 代码,您可以轻松操作数据库,包括查询、插入、更新和删除。本文将介绍 SQLAlchemy 的基本和高级用法,包括关系映射、查询优化和事务管理。无论您是 SQLAlchemy 新手还是经验丰富的用户,本文都将为您提供宝贵的见解,帮助您充分利用这一强大工具。

Python SQLAlchemy 实战秘籍:从新手到专家

sqlAlchemy 简介

SQLAlchemy 是一款 python 中的开源对象关系映射(ORM工具,它可以帮助您轻松地将 Python 对象与数据库中的表进行映射,并通过简单的 Python 代码来对数据库进行操作。SQLAlchemy 支持多种数据库,包括 Mysqlpostgresql、SQLite 等。

SQLAlchemy 基本使用

1. 安装 SQLAlchemy

首先,您需要在您的 Python 环境中安装 SQLAlchemy。您可以使用以下命令进行安装:

pip install sqlalchemy

2. 创建数据库引擎

在使用 SQLAlchemy 之前,您需要先创建一个数据库引擎。数据库引擎是 SQLAlchemy 用于与数据库通信的接口。您可以使用以下代码来创建数据库引擎:

from sqlalchemy import create_engine

engine = create_engine("mysql+pymysql://user:passWord@host:port/database")

其中,mysql+pymysql 是数据库的类型,userpasswordhostportdatabase 分别是数据库的用户名、密码、主机、端口号和数据库名。

3. 创建会话

会话是 SQLAlchemy 用于与数据库交互的对象。您可以使用以下代码来创建会话:

Session = sessionmaker(bind=engine)
session = Session()

4. 操作数据库

您可以使用会话来对数据库进行各种操作,例如查询、插入、更新和删除。以下是一些常用的操作:

4.1 查询数据

您可以使用以下代码来查询数据:

results = session.query(User).filter(User.name == "John").all()

其中,User 是您要查询的表,filter() 方法用于过滤查询结果,all() 方法用于获取所有查询结果。

4.2 插入数据

您可以使用以下代码来插入数据:

new_user = User(name="John", age=30)
session.add(new_user)
session.commit()

其中,User 是您要插入数据的表,new_user 是您要插入的新数据,add() 方法用于将新数据添加到会话中,commit() 方法用于提交会话中的所有修改。

4.3 更新数据

您可以使用以下代码来更新数据:

user = session.query(User).filter(User.name == "John").first()
user.age = 31
session.commit()

其中,User 是您要更新数据的表,filter() 方法用于过滤查询结果,first() 方法用于获取第一个查询结果,age 是您要更新的字段,commit() 方法用于提交会话中的所有修改。

4.4 删除数据

您可以使用以下代码来删除数据:

user = session.query(User).filter(User.name == "John").first()
session.delete(user)
session.commit()

其中,User 是您要删除数据的表,filter() 方法用于过滤查询结果,first() 方法用于获取第一个查询结果,delete() 方法用于删除数据,commit() 方法用于提交会话中的所有修改。

SQLAlchemy 进阶使用

1. 关系映射

SQLAlchemy 可以帮助您轻松地将 Python 对象与数据库中的表进行映射。您可以使用以下代码来定义一个关系映射:

class User(Base):
__tablename__ = "user"

id = Column(Integer, primary_key=True)
name = Column(String(50), unique=True)
age = Column(Integer)

class Address(Base):
__tablename__ = "address"

id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("user.id"))
address = Column(String(100))

# 创建关系映射
User.addresses = relationship("Address", back_populates="user")
Address.user = relationship("User", back_populates="addresses")

其中,UserAddress 是您要映射的两个表,__tablename__ 属性指定了表的名称,id 属性指定了主键,nameageaddress 属性指定了表的字段。ForeignKey() 函数用于指定外键关系。relationship() 函数用于定义关系映射。

2. 查询优化

SQLAlchemy 提供了多种查询优化技术,可以帮助您提高查询性能。以下是一些常用的查询优化技术:

2.1 批量查询

您可以使用批量查询来提高查询性能。批量查询可以一次性查询多个数据行。您可以使用以下代码来进行批量查询:

users = session.query(User).filter(User.age > 18).all()

其中,User 是您要查询的表,filter() 方法用于过滤查询结果,all() 方法用于获取所有查询结果。

2.2 使用索引

您可以使用索引来提高查询性能。索引可以帮助数据库快速找到您要查询的数据。您可以使用以下代码来创建索引:

session.execute("CREATE INDEX idx_user_age ON user (age)")

其中,user 是您要创建索引的表,age 是您要创建索引的字段。

3. 事务管理

SQLAlchemy 支持事务管理。事务可以帮助您确保数据库操作要么全部成功,要么全部失败。您可以使用以下代码来开启一个事务:

session.begin()

您可以使用以下代码来提交一个事务:

session.commit()

您可以使用以下代码来回滚一个事务:

session.rollback()

结语

SQLAlchemy 是一个功能强大且易于使用的 ORM 工具。它可以帮助您轻松地将 Python 对象与数据库中的表进行映射,并通过简单的 Python 代码来对数据库进行操作。本文介绍了 SQLAlchemy 的基本使用和进阶使用。希望您能通过本文学习到 SQLAlchemy 的使用技巧,并将其应用到您的实际项目中。

本篇关于《Python SQLAlchemy 实战秘籍:从新手到专家》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

版本声明
本文转载于:编程网 如有侵犯,请联系study_golang@163.com删除
Go代码在本地环境运行结果与go play中运行结果不一样Go代码在本地环境运行结果与go play中运行结果不一样
上一篇
Go代码在本地环境运行结果与go play中运行结果不一样
Python如何为区块链开发者提供竞争优势?
下一篇
Python如何为区块链开发者提供竞争优势?
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    511次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    498次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 千音漫语:智能声音创作助手,AI配音、音视频翻译一站搞定!
    千音漫语
    千音漫语,北京熠声科技倾力打造的智能声音创作助手,提供AI配音、音视频翻译、语音识别、声音克隆等强大功能,助力有声书制作、视频创作、教育培训等领域,官网:https://qianyin123.com
    364次使用
  • MiniWork:智能高效AI工具平台,一站式工作学习效率解决方案
    MiniWork
    MiniWork是一款智能高效的AI工具平台,专为提升工作与学习效率而设计。整合文本处理、图像生成、营销策划及运营管理等多元AI工具,提供精准智能解决方案,让复杂工作简单高效。
    362次使用
  • NoCode (nocode.cn):零代码构建应用、网站、管理系统,降低开发门槛
    NoCode
    NoCode (nocode.cn)是领先的无代码开发平台,通过拖放、AI对话等简单操作,助您快速创建各类应用、网站与管理系统。无需编程知识,轻松实现个人生活、商业经营、企业管理多场景需求,大幅降低开发门槛,高效低成本。
    352次使用
  • 达医智影:阿里巴巴达摩院医疗AI影像早筛平台,CT一扫多筛癌症急慢病
    达医智影
    达医智影,阿里巴巴达摩院医疗AI创新力作。全球率先利用平扫CT实现“一扫多筛”,仅一次CT扫描即可高效识别多种癌症、急症及慢病,为疾病早期发现提供智能、精准的AI影像早筛解决方案。
    359次使用
  • 智慧芽Eureka:更懂技术创新的AI Agent平台,助力研发效率飞跃
    智慧芽Eureka
    智慧芽Eureka,专为技术创新打造的AI Agent平台。深度理解专利、研发、生物医药、材料、科创等复杂场景,通过专家级AI Agent精准执行任务,智能化工作流解放70%生产力,让您专注核心创新。
    379次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码