当前位置: 首页 > news >正文

Python知识点:如何使用SQLAlchemy进行ORM(对象关系映射)

使用SQLAlchemy进行ORM(对象关系映射)涉及几个关键步骤。以下是一个详细的指南,帮助你理解并使用SQLAlchemy进行ORM。

1. 安装SQLAlchemy

首先,你需要安装SQLAlchemy。你可以使用pip来安装:

pip install sqlalchemy

2. 创建数据库连接

首先,你需要创建一个数据库连接引擎。SQLAlchemy支持多种数据库,包括SQLite、PostgreSQL、MySQL等。

from sqlalchemy import create_engine# 创建一个SQLite数据库连接
engine = create_engine('sqlite:///example.db', echo=True)

echo=True 参数会打印所有生成的SQL语句,方便调试。

3. 定义ORM模型(映射类)

定义数据库表的ORM模型。每个模型类都需要继承自 Base,并且通常以类的属性形式定义表的列。

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_baseBase = declarative_base()class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True)name = Column(String)age = Column(Integer)def __repr__(self):return f"<User(name={self.name}, age={self.age})>"

4. 创建数据库表

一旦定义了模型类,可以通过 Base.metadata.create_all(engine) 方法在数据库中创建相应的表。

Base.metadata.create_all(engine)

5. 创建会话(Session)

SQLAlchemy的 Session 用于管理对象与数据库之间的对话。通常,你需要创建一个 Session 实例来进行数据库的操作。

from sqlalchemy.orm import sessionmakerSession = sessionmaker(bind=engine)
session = Session()

6. 插入数据

你可以通过创建模型类的实例并添加到会话中来插入数据。

# 创建新用户对象
new_user = User(name='Alice', age=25)# 添加到session
session.add(new_user)# 提交到数据库
session.commit()

7. 查询数据

SQLAlchemy提供了丰富的查询API,你可以使用 session.query 来进行查询操作。

# 查询所有用户
users = session.query(User).all()
for user in users:print(user)# 查询特定条件的用户
user = session.query(User).filter_by(name='Alice').first()
print(user)

8. 更新数据

要更新数据库中的数据,可以先查询对象,然后修改它的属性,最后提交会话。

user = session.query(User).filter_by(name='Alice').first()
user.age = 26
session.commit()

9. 删除数据

删除数据类似于更新,先查询出要删除的对象,然后通过 session.delete 方法删除,最后提交会话。

user = session.query(User).filter_by(name='Alice').first()
session.delete(user)
session.commit()

10. 关闭会话

在完成所有操作后,记得关闭会话以释放资源。

session.close()

11. 使用关系(可选)

SQLAlchemy支持复杂的关系映射,比如一对多、多对多等。你可以使用 relationshipForeignKey 来定义模型之间的关系。

from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationshipclass Address(Base):__tablename__ = 'addresses'id = Column(Integer, primary_key=True)email_address = Column(String, nullable=False)user_id = Column(Integer, ForeignKey('users.id'))user = relationship("User", back_populates="addresses")User.addresses = relationship("Address", order_by=Address.id, back_populates="user")

以上是一个简单的例子,展示了如何使用SQLAlchemy进行ORM映射。如果你需要更复杂的操作,SQLAlchemy还提供了许多高级功能,如自定义查询、混合继承、事件监听等,具体可以参考官方文档。


http://www.mrgr.cn/news/16061.html

相关文章:

  • 如何扩展 WSL 2 虚拟硬盘的大小
  • 鸿蒙OS试题(2)
  • 技术风暴中的应急策略:开发团队如何应对突发故障与危机
  • 深度学习的基础_多层感知机的手动实现
  • 搜索引擎技术之网络爬虫(非常详细)零基础入门到精通,收藏这一篇就够了
  • UniaApp引入Iconfont
  • 微分方程(Blanchard Differential Equations 4th)中文版Section5.6
  • 如何在3D无序抓取中应用深度学习算法?
  • Leetcode 剑指 Offer II 093.最长的斐波那契子序列的长度
  • 数字乡村振兴智慧农业整体规划建设方案
  • 关于一个早期对电子辐射的小讨论
  • 学习资料销售平台小程序的设计
  • vue.js项目实战案例源码
  • 盘点免费且靠谱的AI大模型 API,统一封装,任性调用!
  • LeetCode题集-1- 两数之和
  • 鸿蒙Next-拉起支付宝的三种方式——教程
  • 容器编排工具的选择:Kubernetes(K8s)与 K3s 的权衡与实践|Kubernetes|K3s|容器编排|资源受限环境
  • 基于Hutool 判断 日期是否 跨日,月,天
  • XSS LABS 靶场初识
  • 监控域名到期发送钉钉消息通知