Python-SQLAlchemy

Python ORM 框架 SQLAlchemy(瑟扣-奥克米) 笔记,Alchemy /ˈælkəmi/ 炼金术

ORM(Object Relational Mapping) 对象关系映射:将面向对象程序中的对象和关系数据库的表结构做映射,像操作对象一样操作数据库表。

SQLAlchemy 是 Python 中最流行的 ORM 框架。 https://www.sqlalchemy.org/ https://github.com/sqlalchemy/sqlalchemy


安装 SQLAlchemy 及 MySQL 驱动

pip install sqlalchemy pip install mysql-connector-python


概念

SQLAlchemy 概念 数据库
engine 引擎 数据库连接
session 会话 会话
model 模型
column 列

session

会话(Session)是 SQLAlchemy 中用来封装数据库交互的一个核心概念。它作为一个临时的事务空间,管理着所有对象到数据库的持久化操作,包括数据的增加、查询、更新和删除。 Session 记录我们对数据的所有更改,直到我们确认要提交这些更改,或者回滚。

engine = create_engine('sqlite:///example.db')  # 创建数据库引擎
session_maker = sessionmaker(bind=engine)  # 创建Session工厂
session = session_maker()  # 创建Session实例

定义模型

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base

# 模型基类
Base = declarative_base()

# 数据模型
class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True, autoincrement=True, comment='主键ID')
    code = Column(String(255), nullable=False, unique=True, comment='学号')
    name = Column(String(255), nullable=False, comment='姓名')
    age = Column(Integer, nullable=True, comment='年龄')

declarative_base() 是 sqlalchemy 内部封装的一个方法,通过其构造一个基类,这个基类和它的子类,可以将 Python 类和数据库表关联映射起来。 数据库表模型类通过 __tablename__ 和表关联起来,Column 表示数据表的列。