Skip to content

ORM 中间件配置


ORM 中间件简介

ORM 中间件(Object-Relational Mapping Middleware)是一种用于处理对象关系映射的软件层或组件。

它的主要目标是将对象(通常是编程语言中的类或结构体)和关系型数据库之间的数据映射和互操作进行抽象化和简化。ORM 中间件充当了应用程序和数据库之间的翻译器,允许开发人员使用对象的方式来操作数据库而不必直接编写 SQL 查询。

流行的编程语言和框架通常有自己的 ORM 中间件,例如 Python 的 SQLAlchemy、Java 的 Hibernate 等。这些中间件提供了一种更高级、更抽象的方法来与数据库进行交互,使开发人员更容易构建和维护数据库驱动的应用程序。


SQLAlchemy 简介

SQLAlchemy 是著名的 ORM 工具包。通过 ORM,开发者可以用面向对象的方式来操作数据库,不再需要编写 SQL 语句。SQLAlchemy 支持多种数据库,除 SQLite 外,其它数据库需要安装第三方驱动。


SQLAlchemy 的主要功能包含:

  • ORM(对象关系映射)。
  • SQL 表达式。
  • 事务支持。
  • 连接池管理。
  • 多数据库支持。

ORM 中间件优势

  1. 抽象化数据库操作:ORM 中间件隐藏了底层数据库的复杂性,使开发人员能够使用编程语言中的对象和方法来执行数据库操作,而无需编写繁琐的 SQL 查询。

  2. 面向对象编程:ORM 允许开发人员将数据库表映射到编程语言中的类或结构体,这样可以更自然地处理数据,使用对象的方式进行操作。

  3. 跨数据库兼容性:ORM 中间件通常提供了对多种不同数据库系统的支持,从而使应用程序更容易实现数据库的切换和迁移。

  4. 安全性:ORM 中间件通常提供了内置的安全性特性,帮助防止 SQL 注入等攻击。

  5. 数据一致性:ORM 中间件可以帮助确保数据的一致性,处理关系和外键等数据库约束。


SQLAlchemy 安装

SQLAlchemy 在 Python 中可以直接通过 pip 命令进行安装:

pip install sqlalchemy

SQLAlchemy 使用步骤

使用 SQLAlchemy 可以按照以下步骤:

  1. 创建基类,并获得一个基类对象(这个基类对象会在后面建表进行使用):

    Base = declarative_base()
    

  1. 创建引擎,通过引擎可以创建数据库连接,支持连接多种数据库类型,链接配置的格式为:数据库类型+数据库引擎://用户名:密码@主机名:端口/数据库名,具体代码如下所示:

    # sqlite的链接配置:sqlite:///数据库db文件所在的路径
    # mysql的链接配置:mysql+pymysql://username:password@host:port/database
    engine = create_engine(链接配置)
    

  1. 创建 Session 对象,需要绑定引擎:

    # 创建session对象
    DBSession = sessionmaker(bind=engine)
    

  1. 实例化 Session 对象,并且做对应的类型声明,方便后续的数据库操作进行使用:

    db_session: Session = DBSession()
    

SQLAlchemy 连接数据库

以下分别给出 SQLite 与 MySQL 两种数据库的连接示例。


SQLite 安装与配置

大多数情况下 SQLite 无需单独安装,SQLite 库的核心功能已经包含在很多编程语言和应用程序中。


如需安装,可以参考以下文档:

  • SQLite 下载地址:https://sqlite.org/download.html
  • SQLite 安装教程:https://ceshiren.com/t/topic/20637
  • SQLite 在线预览工具:https://github.com/sqlitebrowser/sqlitebrowser

SQLAlchemy 连接 SQLite

SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库。

from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base, sessionmaker, Session

# 声明基类
Base = declarative_base()
# 创建引擎,连接到数据库
engine = create_engine('sqlite:///test.db')
# 创建一个会话工厂,绑定到数据库引擎上
DBSession = sessionmaker(bind=engine)
db_session: Session = DBSession()

SQLAlchemy 连接 MySQL

from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base, sessionmaker, Session

# 声明基类
Base = declarative_base()
# 创建引擎,连接到数据库
engine = create_engine(f'mysql+pymysql://{username}:{pwd}@{ip}:{port}/{database}')
# 创建session对象,绑定到数据库引擎上
DBSession = sessionmaker(bind=engine)
db_session: Session = DBSession()

总结

在本章节中,介绍了 ORM 中间件的相关概念和 SQLAlchemy 的使用。

  1. ORM 中间件简介
  2. SQLAlchemy 简介
  3. ORM 中间件优势
  4. SQLAlchemy 安装
  5. SQLAlchemy 使用步骤
  6. SQLAlchemy 连接数据库

参考资料

  • 官方文档:https://docs.sqlalchemy.org/en/20/index.html
  • 更多数据库链接配置:https://docs.sqlalchemy.org/en/20/dialects