python - Python 数据类映射到 SQL Alchemy
问题描述
我正在尝试将数据类映射到 SQL Alchemy声明性表,但是当我尝试实例化数据类对象时,出现以下错误:
sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'runs.experiment_uuid' could not find table 'experiments' with which to generate a foreign key to target column 'experiment_uuid'
SQL Alchemy 表定义:
class Experiment(Base):
__tablename__ = "experiments"
__table_args__ = {"schema": "test"}
experiment_id = Column(Integer, unique=True)
experiment_uuid = Column(Text, unique=True, primary_key=True)
experiment_config = Column(JSONB)
creation_date = Column(TIMESTAMP)
runs = relationship("Run", lazy="select")
class Run(Base):
__tablename__ = "runs"
__table_args__ = {"schema": "test"}
run_id = Column(Integer, unique=True)
run_uuid = Column(Text, unique=True, primary_key=True)
experiment_uuid = Column(Text, ForeignKey(
"experiments.experiment_uuid"))
run_time = Column(TIMESTAMP)
user_metadata = Column(JSONB, nullable=True)
explanations = relationship("Explanation", lazy="select")
数据类:
@dataclass
class Experiment:
experiment_uuid: str
experiment_config: dict
creation_date: datetime
@dataclass
class Run:
run_uuid: str
experiment_uuid: str
run_time: datetime
user_metadata: dict
映射:
from sqlalchemy.orm import mapper
mapper(Experiment, db_schema.Experiment.__table__)
mapper(Run, db_schema.Run.__table__)
最后,当我尝试实例化和实验时,我得到了错误:
self.experiment = Experiment(
experiment_uuid=str(uuid.uuid1()),
experiment_config=self.config,
creation_date=datetime.now().timestamp()
)
解决方案
推荐阅读
- regex - 带 sed 的硬正则表达式
- computer-vision - Mask RCNN - 如何为数据集中的每张图像使用一个 JSON 文件?
- c++ - Libtorch C++ 和 pytorch 的不同输出
- c - 从不同于 0 的地址运行 C 应用程序
- regex - 匹配数字中的重复数字
- python - 侧输入数据未更新 - Python Apache Beam
- javascript - 如何更改我的 js 代码以使菜单正常工作
- jetty - bootstrap.xml 中的 ActiveMQ Artemis http 和 https
- python-3.x - 熊猫:如何在没有 sep="," 出现在 csv 顶部的情况下导入 CSV
- php - 共享主机会话在多个设备上传递