python sqlalchemy模型的建立

SQLAlchemy 是一个功能强大的 Python SQL 工具包和对象关系映射(ORM)库,用于管理和操作关系数据库。它为 Python 开发者提供了一种用 Python 对象来运行和管理 SQL 数据库的方式。

目录

[SQLAlchemy 的两个核心组成部分](#SQLAlchemy 的两个核心组成部分)

[SQLAlchemy 的主要功能](#SQLAlchemy 的主要功能)

[使用 SQLAlchemy 建立模型示例](#使用 SQLAlchemy 建立模型示例)

[1、安装 SQLAlchemy](#1、安装 SQLAlchemy)

2、导入所需模块

3、创建数据库连接

4、创建基类

5、定义模型

7、创建和使用会话

注意事项

SQLAlchemy 的两个核心组成部分

  1. SQLAlchemy Core:提供了数据库的直接访问,通过构建 SQL 表达式来执行查询。适合于需要精细控制 SQL的项目。

  2. SQLAlchemy ORM:允许你将 Python 类定义为数据库表对象,以对象的方式进行数据库操作。适合于更高层抽象级别的数据处理。

SQLAlchemy 的主要功能

  • 数据库连接和引擎创建 :通过 create_engine() 函数建立到数据库的连接。
  • 元数据管理 :使用 MetaData 和 Table 定义数据库结构。
  • SQL 表达式:使用 SQL表达式语言进行复杂查询。
  • ORM:使用 Python 类和对象操作数据,提高开发效率。
  • 关系映射:支持多对多、一对多及多种复杂关系的映射。
  • 事务管理 :通过 Session 管理事务。

使用 SQLAlchemy 建立模型的过程是将数据库表映射到 Python 类,以便于用面向对象的方法进行数据库操作。下面是建立一个 SQLAlchemy 模型的基本步骤,包括定义类、设置列和关系等。

使用 SQLAlchemy 建立模型示例

1、安装 SQLAlchemy

确保安装 SQLAlchemy 库:

python 复制代码
pip install sqlalchemy
2、导入所需模块
python 复制代码
from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, sessionmaker
3、创建数据库连接

使用 create_engine 创建一个数据库连接。这里以 SQLite 为例:

python 复制代码
engine = create_engine('sqlite:///example.db')
4、创建基类

使用 declarative_base 创建一个基类,所有模型类将从这个基类继承:

python 复制代码
Base = declarative_base()
5、定义模型

定义模型类以映射数据库表和列。例如,我们创建两个简单的表:用户和地址。

python 复制代码
class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    address_id = Column(Integer, ForeignKey('addresses.id'))
    address = relationship("Address", back_populates="user")

    def __repr__(self):
        return f"<User(name={self.name}, address_id={self.address_id})>"

class Address(Base):
    __tablename__ = 'addresses'

    id = Column(Integer, primary_key=True)
    email_address = Column(String, nullable=False)
    user = relationship("User", back_populates="address")

    def __repr__(self):
        return f"<Address(email_address={self.email_address})>"
  • __tablename__ 指定数据库表名。
  • Column 定义表中的列类型和属性。
  • primary_key 用于设置主键。
  • ForeignKey 用于建立表间的外键关系。
  • relationship 用于定义表间的关系,并帮助 SQLAlchemy 在内存中管理这些关系。

6、创建表

通过 Base.metadata.create_all 将定义的模型映射到数据库并创建实际的表结构:

python 复制代码
Base.metadata.create_all(engine)
7、创建和使用会话
  • 利用 sessionmaker 创建一个用于数据库操作的会话:
python 复制代码
Session = sessionmaker(bind=engine)
session = Session()
  • 使用会话添加和查询数据:
python 复制代码
# 添加记录
new_address = Address(email_address="alice@example.com")
new_user = User(name="Alice", address=new_address)
session.add(new_user)
session.commit()

# 查询记录
user = session.query(User).filter_by(name='Alice').first()
print(user)

# 关闭会话
session.close()

注意事项

  • 对象关系映射(ORM):通过 SQLAlchemy 的 ORM,可以使用 Python 类和对象与数据库进行交互,不需要直接编写 SQL。
  • 对象关系管理 :relationship 在处理多表关系时非常有用。
  • 事务控制 :session 用于处理数据库事务,为保证数据一致性,需注意对会话进行提交或回滚操作。

使用 SQLAlchemy 建立模型可以帮助我们以面向对象的方式管理数据库,提升代码的可维护性和可读性,利用其强大的 ORM功能实现数据层的一个逻辑抽象和业务逻辑分离。

相关推荐
海绵宝宝转agent7 小时前
learn-claude-code第1-5章开源学习笔记分享
人工智能·笔记·python·学习
小奇不哭7 小时前
ROS2 单节点,RGB-D 深度相机局部路径提取 + B 样条平滑路径 + YOLOv8 障碍物检测 + 深度测距,用于移动机器人视觉局部循迹。
python·yolov8·ros2·cv2·路径探索循迹
小小龙学IT8 小时前
Python scikit-learn 机器学习库深度解析
python·机器学习·scikit-learn
Elastic 中国社区官方博客8 小时前
将你自己的密钥用于现有 Elastic Cloud 部署
大数据·数据库·elasticsearch·全文检索
2601_962071578 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
红海云9 小时前
Jev:给智能系统做判断的模型
大数据·数据库·人工智能
wjkjpcba9 小时前
PCBA烧录程序是什么:PCBA包工包料厂家解析烧录与测试
linux·数据库·人工智能·smt贴片加工·pcba贴片加工厂
꯭自꯭闭꯭9 小时前
达梦事物特性及MVCC
linux·运维·数据库
卷无止境9 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
Java后端的Ai之路9 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数