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}$
当您使用
get
时,您需要给它一个主键,对于您的IndividualResult
,您已经定义了一个复合主键(由多个列组成的主键),以便查询需要指定这两个列的内容:还值得在类中添加
^{pr2}$__repr__
,以便在进行print
调试时更容易看到发生了什么。在相关问题 更多 >
编程相关推荐