【发布时间】:2020-02-18 20:45:15
【问题描述】:
这是我的模型:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(app)
class Person(db.Model):
__tablename__ = 'persons'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), nullable=False, unique=True)
pets = db.relationship('Pet', backref='owner', lazy='dynamic')
def __init__(self, *args, **kwargs):
super(Person, self).__init__(*args, **kwargs)
def __repr__(self):
return f'<Person id:{self.id} name:{self.name}>'
class Pet(db.Model):
__tablename__ = 'pets'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), nullable=False, unique=True)
owner_id = db.Column(db.Integer, db.ForeignKey('persons.id'), nullable=False)
def __init__(self, *args, **kwargs):
super(Pet, self).__init__(*args, **kwargs)
def __repr__(self):
return f'<Pet id:{self.id} name:{self.name} owner_id:{self.owner_id}>'
我正在尝试使用此查询获取按宠物数量排序的人员列表:
persons = Person.query.order_by(Person.pets).all()
得到这个错误:
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: pets.owner_id
[SQL: SELECT persons.id AS persons_id, persons.name AS persons_name
FROM persons ORDER BY persons.id = pets.owner_id]
我做错了什么? 我有一个建议,我需要使用 join() 提出请求,但是在 google 中的研究没有给出可行的解决方案。
【问题讨论】:
标签: python sql flask sqlalchemy flask-sqlalchemy