Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将结果列表作为JSON返回?_Python_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python 如何将结果列表作为JSON返回?

Python 如何将结果列表作为JSON返回?,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,我想以JSON的形式返回查询结果。我使用以下路径将一个模型实例作为JSON对象返回 @mod.route('/autocomplete/<term>', methods=['GET']) def autocomplete(term): country = Country.query.filter(Country.name_pt.ilike('%'+ term + '%')).first() country_dict = country.__dict__ c

我想以JSON的形式返回查询结果。我使用以下路径将一个模型实例作为JSON对象返回

@mod.route('/autocomplete/<term>', methods=['GET'])
def autocomplete(term):

    country = Country.query.filter(Country.name_pt.ilike('%'+ term + '%')).first()

    country_dict = country.__dict__
    country_dict.pop('_sa_instance_state', None)

    return jsonify(json_list=country_dict) 
我应该怎么做才能将整个结果列表作为JSON返回?

您需要为列表中的每个项目执行“jsonify preparation step”,因为
.all()
返回一个模型实例列表,而不仅仅是像
.first()
这样的一个实例。处理每个
\uuuu dict\uuuu
的副本,这样就不会弄乱SQLAlchemy实例的内部表示

@mod.route('/autocomplete/<term>', methods=['GET'])
def autocomplete(term):
    countries = []

    for country in Country.query.filter(Country.name_pt.ilike('%' + term + '%'):
        country_dict = country.__dict__.copy()
        country_dict.pop('_sa_instance_state', None)
        countries.append(country_dict)

    return jsonify(json_list=countries)
@mod.route('/autocomplete/',方法=['GET']
def自动完成(术语):
国家=[]
对于country.query.filter(country.name_pt.ilike('%'+term+'%')中的国家/地区:
国家/地区=国家/地区
国家/地区流行语(“国家/地区实例”,无)
国家。附加(国家/地区)
返回jsonify(json_list=countries)
最好只是显式地返回每个国家的数据,而不是尝试神奇地将实例JSONIZE化

@mod.route('/autocomplete/<term>', methods=['GET'])
def autocomplete(term):
    countries = []

    for country in Country.query.filter(Country.name_pt.ilike('%' + term + '%'):
        countries.append({
            'id': country.id,
            'name': country.name_pt,
        })

    return jsonify(countries=countries)
@mod.route('/autocomplete/',方法=['GET']
def自动完成(术语):
国家=[]
对于country.query.filter(country.name_pt.ilike('%'+term+'%')中的国家/地区:
国家。附加({
“id”:country.id,
“名称”:country.name\u pt,
})
返回jsonify(国家=国家)
您需要为列表中的每个项目执行“jsonify preparation step”,因为
.all()
返回一个模型实例列表,而不仅仅是像
.first()
这样的一个实例。处理每个
\u dict\u
的副本,这样就不会弄乱SQLAlchemy实例的内部表示

@mod.route('/autocomplete/<term>', methods=['GET'])
def autocomplete(term):
    countries = []

    for country in Country.query.filter(Country.name_pt.ilike('%' + term + '%'):
        country_dict = country.__dict__.copy()
        country_dict.pop('_sa_instance_state', None)
        countries.append(country_dict)

    return jsonify(json_list=countries)
@mod.route('/autocomplete/',方法=['GET']
def自动完成(术语):
国家=[]
对于country.query.filter(country.name_pt.ilike('%'+term+'%')中的国家/地区:
国家/地区=国家/地区
国家/地区流行语(“国家/地区实例”,无)
国家。附加(国家/地区)
返回jsonify(json_list=countries)
最好只是显式地返回每个国家的数据,而不是尝试神奇地将实例JSONIZE化

@mod.route('/autocomplete/<term>', methods=['GET'])
def autocomplete(term):
    countries = []

    for country in Country.query.filter(Country.name_pt.ilike('%' + term + '%'):
        countries.append({
            'id': country.id,
            'name': country.name_pt,
        })

    return jsonify(countries=countries)
@mod.route('/autocomplete/',方法=['GET']
def自动完成(术语):
国家=[]
对于country.query.filter(country.name_pt.ilike('%'+term+'%')中的国家/地区:
国家。附加({
“id”:country.id,
“名称”:country.name\u pt,
})
返回jsonify(国家=国家)