使用Flask SQL Alchemy查询属性错误

2024-09-28 23:40:08 发布

您现在位置:Python中文网/ 问答频道 /正文

from flask import Flask
import requests
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:@localhost/localDB'


class MainResult(db.Model):
    __tablename__ = "mainresult"

    metadata_key = db.Column(db.String(128), primary_key=True)
    individualResults = db.relationship('IndividualResult', backref='mainresult', lazy='dynamic',
                                        cascade="all, delete-orphan")

    def __init__(self, metadata_key):
        self.metadata_key = metadata_key

class IndividualResult(db.Model):
    __tablename__ = "individualresult"

    metadata_key = db.Column(db.String(128), db.ForeignKey('mainresult.metadata_key'), primary_key=True)
    ts = db.Column(db.String(50), primary_key=True)

    def __init__(self, metadata_key, ts):
        self.metadata_key = metadata_key
        self.ts = ts




@app.route('/')
def hello_world():
    # This throws an error.
    print IndividualResult.query.get("03d49625b00643058a40eb8672e94f4e")
    # Error too
    IndividualResult.query.filter_by(metadata_key='03d49625b00643058a40eb8672e94f4e').first()

    # This works.
    print MainResult.query.get("03d49625b00643058a40eb8672e94f4e")

    return 'Hello World!'

if __name__ == '__main__':
    app.run(debug=True)

我有上述代码和数据正确插入。我可以用MainResult.query,但我不能这样做IndividualResult.query. 在

返回的错误是

AttributeError:“InstrumentedAttribute”对象或“Comparator”对象都与IndividualResult.query具有“get”属性

这很奇怪,因为它们几乎完全相同

完整堆栈跟踪:

^{pr2}$

Tags: keyfromimportselftrueappflaskdb
1条回答
网友
1楼 · 发布于 2024-09-28 23:40:08

当您使用get时,您需要给它一个主键,对于您的IndividualResult,您已经定义了一个复合主键(由多个列组成的主键),以便查询需要指定这两个列的内容:

print(IndividualResult.query.get(("03d49625b00643058a40eb8672e94f4e", "TSVALUE")))

还值得在类中添加__repr__,以便在进行print调试时更容易看到发生了什么。在

^{pr2}$

相关问题 更多 >