SQLAlchemy: AttributeError: 'unicode' object has no attribute '_sa_instance_state'
SQLAlchemy: AttributeError: 'unicode' object has no attribute '_sa_instance_state'
我看到其他有类似错误的问题,尽管他们的修复没有解决我的问题。请注意,我正在使用 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'
此错误是什么意思以及如何修复我的代码以防止出现此错误?谢谢。
您正在按 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
作为字符串,而它应该是一个整数。我不确定它是如何获得初始值的,但你会想在那里解决这个问题。
我看到其他有类似错误的问题,尽管他们的修复没有解决我的问题。请注意,我正在使用 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'
此错误是什么意思以及如何修复我的代码以防止出现此错误?谢谢。
您正在按 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
作为字符串,而它应该是一个整数。我不确定它是如何获得初始值的,但你会想在那里解决这个问题。