sqlalchemy - 如何在 SQLAlchemy 中的两个表之间建立两个相似的关系?
问题描述
我已经回来并放弃了好几次。
从技术上讲,如果这有所作为,那就是烧瓶 sqlalchemy。我想我要做的是在 Pair 表中建立两个多对一(或者是一对一?)关系,它们都指的是 Word 表。一对必须有两个单词,一个单词可以有很多对。
class Pair(db.Model):
__tablename__ = "pairs"
id = db.Column(db.Integer, primary_key=True)
word_id = db.Column(db.Integer, db.ForeignKey('words.id'), nullable=False)
partner_id = db.Column(
db.Integer, db.ForeignKey('words.id'), nullable=False)
word_sound = db.Column(db.String(), nullable=False)
partner_sound = db.Column(db.String(), nullable=False)
# These two relationships are where I'm particularly lost. The words 1 and 2 need to
# refer to two separate sounds, so I can't just have two words and two sounds in any
# order. Therefore I need to have two one-to-one links to the same table:
word1t = db.relationship(
"Word", foreign_keys=[word_id], primaryjoin="Pair.word_id==Word.id",, back_populates="pairs")
word2t = db.relationship(
"Word", foreign_keys=[partner_id], primaryjoin="Pair.partner_id==Word.id", back_populates="pairs")
class Word(db.Model):
__tablename__ = "words"
id = db.Column(db.Integer, primary_key=True)
word = db.Column(db.String(), nullable=False)
# Relationships
# "partners" refers to all words that this word has a pair (link) with
partners = db.relationship(
'Word',
secondary="pairs",
primaryjoin=id == Pair.word_id,
secondaryjoin=id == Pair.partner_id,
backref=db.backref('words')
)
# "pairs" is supposed to refer to all pairs that this word is a part of.
pairs = db.relationship('Pair', primaryjoin=id ==
or_(Pair.word_id, Pair.partner_id))
我有这些模型。基本上我有单词和(单词)对,其中对由两个单词组成,并且还包含一些关于对类型的信息。在一对中,我需要两个不同的单词,每个单词都有自己的声音。这个声音是由单词与另一个单词的关系来定义的,所以 fx 在一对“pat”和“hat”中,“pat”有“p”,“hat”有“h”,因为这些声音构成了字。所以什么声音属于什么词很重要。但我不能只将声音放在 Word 表中,因为“pat”在链接到“pac”时具有不同的声音 (t)。
我已经尝试了很多东西并再次删除它们,但现在我只是希望有人能告诉我正确的方法。
帮助我,Stackoverflow。你是我唯一的希望。
解决方案
推荐阅读
- python - Keras 隐藏层中的反馈
- python - 在 Ubuntu 与 Windows 中解压缩相同文件时的不同目录结构
- android - 为什么 Firebase 总是下载所有数据?
- actionscript-3 - 即使我指定了一个参数,我的 AS3 类如何传递 0 个参数?
- sql-server - EF Core 3.1 中的视图到表关系
- reactjs - React Native - 使用 Chart Kit 时出错(执行 UI 块时抛出异常:__NSCFNumber firstObject:无法识别的选择器发送到实例)
- phpstorm - PhpStorm 和 Blade - 未解决的函数或方法
- javascript - TypeError:无法读取未定义的属性“onMarksSelection”。尝试使用 React js 将事件侦听器附加到画面可视化时
- c++ - C++ 读取访问冲突,结构向量
- javascript - 如何使用来自 javascript(客户端)的变量从 node.js(服务器端)检索数据?