gpt4 book ai didi

python - Flask RESTless 删除多个主键

转载 作者:行者123 更新时间:2023-11-28 18:43:02 30 4
gpt4 key购买 nike

我在使用 Flask RESTless 时遇到了一些小问题,也许你可以帮助我 :)

我的 SQL(和 SQLAlchemy)中有一些表是 N..N 关系的结果,它们的主键是两列的总和。例如

Table 1 Key / Table 2 Key / Some data
0 0 Bla
0 1 Blabla
1 0 Morebla
1 1 Silenceisgolden

如果我使用带有 ID 的 GET 动词,示例 0,RESTless 仅使用“Table 1 Key”并返回 0,0,Bla。

我可以使用查询语言 (?q=) 并获得 0,0 和 0,1。

问题是:我如何只选择带有 PATCH 或 DELETE 动词的一个?我只能删除或修补 0,0

希望这个问题很清楚:)

非常感谢!

最佳答案

我最近遇到了类似的问题。问题是 flask-reSTLess 喜欢假设主键是非复合键。

但是,有非常好的解决方法。首先,您需要为端点启用 multi-DELETE 和 multi-PATCH:

 manager.create_api(                                                              
Your_Composite_Model, # flask-sqlalchemy model class
methods=['GET', 'POST', 'DELETE', 'PATCH'],
allow_delete_many=True,
allow_patch_many=True)

此更改允许您使用 flask-reSTLess 的查询参数删除或修补表中的项目,您可以使用它来过滤您希望删除的确切行。

下面是一个使用 requests 库的 python 脚本,它删除了上面复合表中的第二行(并且只删除了第二行):

import requests                                                                  
import json

url = 'http://127.0.0.1:5000/api/your_composite_model'
headers = {'Content-Type': 'application/json'}

filters = [
dict(name='table_1_key', op='eq', val='0'),
dict(name='table_2_key', op='eq', val='1'),
]

params = dict(q=json.dumps(dict(filters=filters)))

response = requests.delete(url, params=params, headers=headers)
print(response.json())

~

输出应该是: {u'num_deleted': 1}

关于python - Flask RESTless 删除多个主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23922863/

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