You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Flask-SQLAlchemy关联查询返回序列化JSON?

我来帮你把这组Flask-SQLAlchemy的一对多关联模型整理成清晰的Markdown格式,还附带一点实用说明:

Flask-SQLAlchemy 一对多关联模型定义

这是一个典型的一对多数据关联:一个用户(User)可以拥有多条上传记录(Upload),而每条上传记录仅属于一个用户。完整的模型代码如下:

from flask_sqlalchemy import SQLAlchemy

# 初始化SQLAlchemy实例
db = SQLAlchemy()

class User(db.Model):
    # 数据库表名
    __tablename__ = "users"
    # 主键字段
    user_id = db.Column(db.Integer, primary_key=True)
    # 核心字段(按字母顺序排序)
    email = db.Column(db.String(50), nullable=False, unique=True)
    password = db.Column(db.String, nullable=False)
    username = db.Column(db.String(50), unique=True)
    # 关联关系:一个用户对应多个上传记录
    uploads = db.relationship("Upload", backref="user")

class Upload(db.Model):
    # 数据库表名
    __tablename__ = "uploads"
    # 主键字段
    upload_id = db.Column(db.Integer, primary_key=True)
    # 外键:关联User表的user_id,确保上传记录归属有效用户
    user_id = db.Column(db.Integer, db.ForeignKey("users.user_id"), nullable=False)
    # 示例业务字段(可根据实际需求调整)
    file_name = db.Column(db.String(100), nullable=False)
    upload_time = db.Column(db.DateTime, nullable=False)

关键关联说明

  • uploads = db.relationship("Upload", backref="user"):在User模型中声明与Upload的关联,backref="user"会自动给Upload模型添加一个user属性——你可以直接通过upload.user获取该上传记录所属的用户对象,无需手动查询。
  • db.ForeignKey("users.user_id"):这是Upload表的外键约束,它将uploads表的user_id字段与users表的user_id主键绑定,保证数据的一致性(比如不能创建没有归属用户的上传记录)。

内容的提问来源于stack exchange,提问作者user5482893

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:24:55