sqlalchemy 自动模型 不定义模型使用

本文介绍了如何使用FastAPI和SQLAlchemy库在Python中创建API接口,包括使用automap自动映射数据库表、动态创建模型以及执行SQL查询。两种方法分别展示了如何处理基础的CRUD操作。
摘要由CSDN通过智能技术生成
from fastapi import FastAPI
from sqlalchemy import create_engine, MetaData,text
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import sessionmaker

app = FastAPI()

# 替换为你的数据库连接信息
DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/dbName"

engine = create_engine(DATABASE_URI,echo=True)
metadata = MetaData()

# 反射数据库表结构
metadata.reflect(engine)

# 使用automap_base创建一个Base类,它会自动为所有表创建一个映射
Base = automap_base(metadata=metadata)
Base.prepare()
# 也可以这样:Base.prepare(engine, reflect=True)

# 创建会话
Session = sessionmaker(bind=engine)
session = Session()


@app.get("/items/")
async def read_items():
    # 将映射的表名与类关联
    tb = Base.classes.tableName

    # 从模型中查询数据
    results = session.query(tb).all()

    results = session.query(tb).filter(tb.id == 2).first()

    return results

第二种方法

from fastapi import FastAPI
from sqlalchemy import create_engine, MetaData, Table
from sqlalchemy.orm import declarative_base, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
app = FastAPI()

# 创建数据库引擎
engine = create_engine('mysql://root:123456@127.0.0.1:3306/')
# 创建会话
SessionLocal = sessionmaker(bind=engine)

# 创建模型基类
Base = declarative_base()

# 创建元数据对象
metadata = Base.metadata
# 或者使用
# metadata = MetaData()

# 动态创建模型
class User(Base):
    __table__ = Table('', metadata, autoload_with=engine)

    # 如果需要,可以在这里添加额外的关系或方法


@app.get("/test/")
def read_user():
    session = SessionLocal()

    # 使用动态模型查询数据
    users = session.query(User).all()

    return users

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值