ORM工具操作数据库流程

类似mybatis

ORM建表:

image

 

image

 

image

 

image

 

 

 

SQLAlchemy ORM 操作数据库六步走:


1. 建引擎(连哪个库)

from sqlalchemy import create_engine
engine = create_engine("sqlite:///test.db")  # 也有 MySQL/PostgreSQL

2. 建会话工厂(怎么连)

from sqlalchemy.orm import sessionmaker
SessionLocal = sessionmaker(bind=engine)

3. 声明基类 + 定义模型(表长什么样)

from sqlalchemy.orm import DeclarativeBase

class Base(DeclarativeBase):
    pass

class User(Base):
    __tablename__ = "users"
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str] = mapped_column()

4. 建表

Base.metadata.create_all(bind=engine)

5. 用会话做增删改查

# 增
user = User(name="小明")
db.add(user)
db.commit()

# 查
users = db.execute(select(User)).scalars().all()

# 改
user.name = "小红"
db.commit()

# 删
db.delete(user)
db.commit()

6. 在 FastAPI 路由里注入会话

@app.get("/users")
def get_users(db: Session = Depends(get_db)):
    return db.execute(select(User)).scalars().all()

核心就一句:引擎管连接,会话管事务,模型管表结构,路由里注入会话干活。Java 那套 @Autowired + @Transactional 干的也是这几步,只是被 Spring 藏起来了。

 

SQLAlchemy ORM 五步走:

步骤干什么类比 Java
① 建引擎 连哪个数据库 application.yml
② 会话工厂 生产带事务的会话对象 SqlSessionFactory
③ 定义模型 数据库列 ↔ Python 属性 User.java 实体类
④ 建表 生成表(已有表跳过) DDL 脚本
⑤ 依赖注入 路由里拿会话干活 @Transactional

① + ② + ⑤ 封装在 database.py,全项目写一次。 每个表写一个。日常开发只操心 和路由逻辑,其余复用就行。

posted @ 2026-07-26 15:25  jokercheems  阅读(1)  评论(0)    收藏  举报