【发布时间】:2014-06-29 11:08:52
【问题描述】:
我对数据库不是很有经验,可能完全走错了路。
我有两个表,链接和标签,以及一个关联表。我想用一个看起来像row = [tag, link] 的输入来更新这个数据库,但我想确保我没有添加任何已经存在的标签或链接。所以我先测试链接是否存在,然后标签是否存在,最后关联是否存在。
表格如下所示:
tagslinks_assoc = Table(
'tagslinks', Base.metadata,
# Column('id', Integer, primary_key=True), # Not sure if this is required
Column('tagid', Integer, ForeignKey('tags.tagid')),
Column('linkid', Integer, ForeignKey('links.linkid')))
class Tags(Base):
__tablename__ = 'tags'
tagid = Column(Integer, primary_key=True)
tag = Column(String, unique=True)
links = relationship("Links", secondary=tagslinks_assoc, backref="tags")
class Links(Base):
__tablename__ = 'links'
linkid = Column(Integer, primary_key=True)
link = Column(String, unique=True)
我正在检查链接和标签是否存在:
link = session.query(Links).filter(Links.link == row[1]).first()
tag = session.query(Tags).filter(Tags.tag == row[0]).first()
如果标签和链接都已经存在但尚未连接,我将如何更新它们之间的关联?
在 sqlalchemy 和/或数据库关系中是否有什么东西让整个方法变得多余?
我在 this example 工作,以了解如何创建多对多关系,但我的领域都是独一无二的。也许他们不应该?
【问题讨论】:
标签: python database-design sqlalchemy