0

0

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

王林

王林

发布时间:2024-02-25 08:00:57

|

1097人浏览过

|

来源于编程网

转载

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 分别是数据库的用户名、密码、主机、端口号和数据库名。

立即学习Python免费学习笔记(深入)”;

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 删除数据

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

知识画家
知识画家

AI交互知识生成引擎,一句话生成知识视频、动画和应用

下载
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速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

668

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

247

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

281

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

516

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

256

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

387

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

533

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

603

2023.08.14

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

8

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号