繁体   English   中英

SAWarning:对于延迟加载的属性“Similarity.tag1”,使用 uselist=False 返回多行

[英]SAWarning: Multiple rows returned with uselist=False for lazily-loaded attribute 'Similarity.tag1'

我从 SQLAlchemy 收到以下警告,我想知道问题是什么:

\venv\lib\site-packages\sqlalchemy\orm\strategies.py:911: SAWarning: Multiple rows returned with uselist=False for lazily-loaded attribute 'Similarity.tag1' 
  util.warn(
\venv\lib\site-packages\sqlalchemy\orm\strategies.py:911: SAWarning: Multiple rows returned with uselist=False for lazily-loaded attribute 'Similarity.tag' 
  util.warn(

我的 ORM 类如下所示:

class Similarity(db.Model):
    __tablename__ = 'similarities'

    tag_id_1 = db.Column(db.ForeignKey('tags.id'), primary_key=True, nullable=False)
    tag_id_2 = db.Column(db.ForeignKey('tags.id'), primary_key=True, nullable=False, index=True)
    value = db.Column(DOUBLE, nullable=False)

    tag = db.relationship('Tag', primaryjoin='Similarity.tag_id_1 == Tag.id', backref='tag_similarities')
    tag1 = db.relationship('Tag', primaryjoin='Similarity.tag_id_2 == Tag.id', backref='tag_similarities_0')


class Tag(db.Model):
    __tablename__ = 'tags'

    id = db.Column(db.Integer, primary_key=True, nullable=False, autoincrement=True)
    language_id = db.Column(db.ForeignKey('languages.id'), primary_key=True, nullable=False, index=True)
    name = db.Column(db.String(45), nullable=False, index=True)

    language = db.relationship('Language', primaryjoin='Tag.language_id == Language.id', backref='tags')

我使用SQLAlchemy 1.3.22和 Python 3.8。 你能解释一下这条消息是关于什么的,我该如何解决这个问题?

正如tag1所说,关系tag和标签1 可以指向多个标签,因为Tag有两个主要列。 这就是警告信息的含义:关系不是唯一的

因此,解决方案是要么删除这些关系,要么使它们独一无二。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM