【问题标题】:SQLAlchemy: AttributeError: 'unicode' object has no attribute '_sa_instance_state'SQLAlchemy:AttributeError:'unicode'对象没有属性'_sa_instance_state'
【发布时间】:2015-08-08 13:25:27
【问题描述】:

尽管他们的修复并没有解决我的问题,但我看到了其他类似错误的问题。请注意,我使用的是 Flask-SQLAlchemy。

这是我的模型文件:

class subjects(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    subject = db.Column(db.String(100))

class questions(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    accountID = db.Column(db.Integer, db.ForeignKey('accounts.id'))
    subjectID = db.Column(db.Integer, db.ForeignKey('subjects.id'))
    subject = db.relationship('subjects')
    topic = db.Column(db.String(150), nullable=True)

如您所见,我希望questions.subject 引用subjects.subject。我尝试形成一个查询:

topicList = db.session.query(questions.topic.distinct()).filter_by(subject=subjectID, accountID=accountID)

我收到一条错误消息,指出 AttributeError: 'unicode' object has no attribute '_sa_instance_state'

此错误是什么意思以及如何修复我的代码以防止此错误?谢谢。

【问题讨论】:

    标签: python flask sqlalchemy flask-sqlalchemy


    【解决方案1】:

    您正在按subject 过滤,但提供的是字符串而不是对象。你要么需要使用一个对象

    subject = db.session.query(subjects).get(subjectID)
    topicList = db.session.query(questions.topic.distinct()).filter_by(subject=subject, accountID=accountID)
    

    或者您需要通过subjectID查询

    topicList = db.session.query(questions.topic.distinct()).filter_by(subjectID=subjectID, accountID=accountID)
    

    在任何一种情况下,您似乎都将subjectID 用作字符串,而它应该是一个整数。我不确定它是如何获得其初始值的,但你会想在那里解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 2023-03-17
      • 1970-01-01
      • 2016-01-10
      • 2018-12-23
      • 2021-12-27
      相关资源
      最近更新 更多