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功能实现数据层的一个逻辑抽象和业务逻辑分离。

相关推荐
盒马coding5 分钟前
第19节-非规范化数据类型-Composite-types
数据库·postgresql
丁浩6665 分钟前
Python机器学习---2.算法:逻辑回归
python·算法·机器学习
-雷阵雨-25 分钟前
MySQL——桥梁JDBC
数据库·mysql·oracle
B站_计算机毕业设计之家27 分钟前
计算机毕业设计:Python农业数据可视化分析系统 气象数据 农业生产 粮食数据 播种数据 爬虫 Django框架 天气数据 降水量(源码+文档)✅
大数据·爬虫·python·机器学习·信息可视化·课程设计·农业
亿坊电商32 分钟前
在PHP框架里如何进行数据库连接?
数据库·oracle·php
Q_Q51100828540 分钟前
python+uniapp基于微信小程序的旅游信息系统
spring boot·python·微信小程序·django·flask·uni-app·node.js
鄃鳕42 分钟前
python迭代器解包【python】
开发语言·python
满昕欢喜1 小时前
SQL Server从入门到项目实践(超值版)读书笔记 28
数据库·sql·sqlserver
楚韵天工1 小时前
宠物服务平台(程序+文档)
java·网络·数据库·spring cloud·编辑器·intellij-idea·宠物
懷淰メ1 小时前
python3GUI--模仿百度网盘的本地文件管理器 By:PyQt5(详细分享)
开发语言·python·pyqt·文件管理·百度云·百度网盘·ui设计