python - 支持 M2M 关联表中的重复条目
问题描述
我正在使用 flask 和 flask-db 开发一个 SQL-Alchemy 应用程序,并且一直在为如何解决这个问题而摸不着头脑。我的模型如下所示:
class event_schematics_map():
event_schematics_table = db.Table(
'event_schematics_table',
db.Column('fk_schematic_id', db.Integer, db.ForeignKey('schematics.id')),
db.Column('fk_event_id', db.Integer, db.ForeignKey('events.id'))
)
class Events(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(120), index=True, unique=False)
date = db.Column(db.String(120), unique=False)
owner = db.Column(db.Integer, db.ForeignKey('user.id'))
schematics = db.relationship('Recipe', secondary=event_schematics_map.event_schematics_table, backref='schematic')
class Schematics(db.Model):
__tablename__ = 'schematics'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.VARCHAR(70), index=True)
schematics_description = db.Column(db.String(1024), index=True)
creator_id = db.Column(db.Integer, db.ForeignKey('user.id'))
原理图被创建并位于 O2M 的许多方面,上面没有单独显示一个用户表。映射表用作 M2M 关系中的粘合剂。
目前我正在为每个事件添加新的原理图并像这样更新关联表:events.schematics.append(SomeNewSchematic)
在我尝试输入完全相同的原理图的多个实例之前,它工作正常,如下所示:
schem1 = Schematics(name='TheOnlySchematic')
schem2 = Schematics(name='TheOnlySchematic')
event.schematics.append(schem1)
event.schematics.append(schem2)
etc
在这种情况下,我只能申请一个,因为我认为该条目被重复了。我相信这可以通过关联表 event_schematics_map 中的一个附加字段来解决,但不确定我是否忽略了一些更简单的东西或如何实现它。
实际上,我想支持完全相同模型的多个条目
我相信我的问题与我可以将两次相同的对象附加到 sqlalchemy 中的检测列表中的问题相同- 但我看不到解决方案。
真的很感激任何指针或知道如何解决这个问题。
解决方案
谢谢你的回复,让我直接在这里,
你说得对,重复的条目没有意义。
我最终通过使用其他答案中讨论的关联表来跟踪每个原理图的出现来解决这个问题。
推荐阅读
- notepad++ - 记事本++:多个空格
- javascript - 使用 axois 渲染 redux 动作时未捕获的 Promise
- java - 在 Java 8 中使用 Optional.empty 默认 Optional orElse
- google-apps-script - 谷歌应用脚本根据列的值将行复制到动态创建的选项卡中
- excel - 在 Excel 的另一个日期列中按年份计算特定列值
- python - 为什么 subprocess.Popen 在使用这个 python 库时找不到 mysqldump?
- algorithm - 这个 if 语句如何影响时间复杂度?
- sql - 如何使用带入 SQL Server 临时表的 SAS 数据集并与另一个临时表一起使用来加入、更新
- compression - 如何压缩作为大型数据框的 .RData 文件?
- php - 将下拉菜单列添加到 php 表