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() 函数建立到数据库的连接。
  • 元数据管理 :使用 MetaDataTable 定义数据库结构。
  • 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功能实现数据层的一个逻辑抽象和业务逻辑分离。

相关推荐
正在走向自律3 小时前
解锁WebRTC在数字人领域的无限潜能
人工智能·python·llm·webrtc·数字人·微软autogen·实时语音交互
neo_Ggx233 小时前
SQL 函数:使用 REPLACE进行批量文本替换
数据库·sql
@半良人3 小时前
解构复杂财务逆向业务:如何优雅地生成与管理负数单?
python
赵得C3 小时前
Spring Boot 实现数据库表变更监听的 Redis 消息队列方案
数据库·spring boot·redis·监听
Eira-Z4 小时前
日志分析与安全数据上传脚本
python·计算机网络
潘达斯奈基~4 小时前
pytorch初级
人工智能·pytorch·python
PEI044 小时前
Java集合遍历的方法有哪些
java·windows·python
java1234_小锋4 小时前
[免费]基于Python的气象天气预报数据可视化分析系统(Flask+echarts+爬虫) 【论文+源码+SQL脚本】
python·flask·python数据分析·python天气预报·flask天气预报·python气象·python可视化
番茄老夫子4 小时前
适合工程软件使用的python画图插件对比
开发语言·python·信息可视化