FastAPI+SQLAlchemy ORM存储带选项提示及用户答案,求Enum实现与验证方案
问题:FastAPI+SQLAlchemy实现带选项的提示与用户答案存储
需求说明
需要开发FastAPI应用,使用SQLAlchemy ORM进行数据库操作,需存储以下格式的数据:
Prompt #1: ""
Options for prompt #1: ["", "", ..., ""]Prompt #2: ""
Options for prompt #2: ["", "", ..., ""]...
核心要求:每个提示对应一组固定选项,用户只能从对应提示的选项中选择答案,同时需要记录用户为每个提示选择的具体选项。
当前已搭建的数据库模型
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship import datetime class Base(): id = Column(Integer, primary_key=True, index=True) created_at = Column(DateTime(timezone=True), default=datetime.datetime.utcnow) updated_at = Column(DateTime(timezone=True), default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow) Base = declarative_base(cls=Base) class User(Base): __tablename__ = "users" # 省略其他字段... prompt_answers = relationship("PromptAnswer", back_populates="user") class Prompt(Base): __tablename__ = "prompts" prompt = Column(String, nullable=False) prompt_answers = relationship("PromptAnswer", back_populates="prompt") class PromptAnswer(Base): __tablename__ = "prompts_answers" user_id = Column(Integer, ForeignKey("users.id")) prompt_id = Column(Integer, ForeignKey("prompts.id")) answer = Column(String, nullable=False) user = relationship("User", back_populates="prompt_answers") prompt = relationship("Prompt", back_populates="prompt_answers")
现有思路与疑问
目前我的想法是:手动把所有提示添加到数据库,每个提示对应的选项存储在本地JSON文件中,在接口控制器层读取文件并完成用户答案的合法性验证,但不确定这个方案是否最优。
另外,我了解SQLAlchemy支持Enum作为列数据类型,想知道能不能用Enum来实现这个需求?如果可以的话,具体该怎么设计模型和做验证?
内容的提问来源于stack exchange,提问作者Vaibhav
相关产品推荐
相关产品推荐

