python - 如何多次插入与 flask-sqlalchemy 的多对多关系?
问题描述
我正在使用 flask-sqlalchemy 来创建一个 RestAPI。这个想法是在其中存储具有一种或多种媒体的播放列表。为了将这两者联系起来,我使用了多对多关系。
有时,相同的媒体会在播放列表中插入两次,但由于关系表已经有条目而失败。
class Media(db.Model):
__tablename__ = 'media'
id = db.Column(db.Integer, primary_key=True)
medias = db.Table('media_playlist',
db.Column('media_id', db.Integer, db.ForeignKey('media.id'), primary_key=True),
db.Column('playlist_id', db.Integer, db.ForeignKey('playlist.id'), primary_key=True),
)
class Playlist(db.Model):
__tablename__ = 'playlist'
id = db.Column(db.Integer, primary_key=True)
medias = db.relationship('Media',
secondary=medias,
lazy='subquery',
backref=db.backref('playlists', lazy=True))
链接错误:
UNIQUE constraint failed: media_playlist.media_id, media_playlist.playlist_id
您将如何存储多次相同的链接?
谢谢你,罗
解决方案
为什么要设置primary_key=True
外键列?SQLAlchemy
由于您正在制作列外键,这意味着它将存储多次相同的值,但是当您将其设为主键时,这意味着它需要是unique
,现在您有此错误fails UNIQUE constraint
。如果你希望它被索引,你不必做任何事情,因为默认情况下 DB 正在索引外键。
推荐阅读
- java - java - 如何在java android中为Gridview的父类BaseAdapter实现viewBinding?
- r - 在 R 中加载 GEOquery
- java - 如何让getMapping显示数据spring boot
- c++ - 如何将 jsoncpp 与 cmake 链接
- masstransit - 阅读消息时未设置带有quartz.net对象引用的大众运输调度程序
- azure-application-insights - 如何使用 serilog 的应用程序洞察接收器设置最小日志级别
- javascript - 如何使用填充使弹性元素更大?
- javascript - Javascript阻止HTML在画布上绘图
- ansible - 在 Linux 控制器上使用 Ansible 通过 ssh 管理 Windows 主机?
- r - 从长格式数据中获取非 na 数据