gpt4 book ai didi

python - 在 Flask-SQLAlchemy 中加入后过滤

转载 作者:行者123 更新时间:2023-12-03 22:47:50 25 4
gpt4 key购买 nike

我有两个正在尝试查询的表( locationcountry );在我的 flask 应用程序中由以下模型表示

from sqlalchemy import Column, DateTime, ForeignKey, Integer, \
Numeric, SmallInteger, String, Table
from sqlalchemy.orm import relationship
from sqlalchemy.schema import FetchedValue
from flask_sqlalchemy import SQLAlchemy


db = SQLAlchemy()


class Country(db.Model):
__tablename__ = 'country'

country_id = db.Column(db.Integer, primary_key=True)
country_name = db.Column(db.String(30), nullable=False)
full_country_name = db.Column(db.String(90), nullable=False)
country_code = db.Column(db.String(4), nullable=False)

def __str__(self):
return '%s' % self.country_name

def __repr__(self):
return '<Country %r>' % self.country_name


class Location(db.Model):
__tablename__ = 'location'

location_id = db.Column(db.Integer, primary_key=True)
location_name = db.Column(db.String(75), nullable=False)
country_id = db.Column(db.ForeignKey('mashamba.country.country_id'), nullable=False, index=True)

country = db.relationship('Country', primaryjoin='Location.country_id == Country.country_id', backref='locations')

def __str__(self):
return '%s' % self.location_name

def __repr__(self):
return '<Location %r>' % self.location_name

我想要做的是通过使用以下代码执行连接来获取两个表中的所有列
Location.query.join(Country).\
filter_by(location_name='Cairo',
country_id=67).first()

问题是当我运行代码时出现以下错误
sqlalchemy.exc.InvalidRequestError: Entity '<class 'app.models.Country'>' has no property 'location_name'

例如,当您运行此代码时,一切正常
Location.query.join(Country).all()

这里有什么问题,如何解决?

最佳答案

filter_by() 适用于查询的主要实体,或作为 join() 目标的最后一个实体。 .在你的情况下是 Country ,它没有 required 属性。要么使用 filter() 或将电话转至 filter_by(location_name=...)加入前:

Location.query.\
filter_by(location_name='Cairo').\
join(Country).\
filter_by(country_id=67).\
first()

关于python - 在 Flask-SQLAlchemy 中加入后过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51862572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com