【发布时间】:2020-02-08 05:15:37
【问题描述】:
在烧瓶休息服务器中是否有处理查询参数的模式?我知道我可以在 python 中使用字符串操作逐字创建 sql 查询词,但我发现这很难看且容易出错,我想知道是否有更好的方法。这是我所拥有的:
param1 = request.args.get('param1', type = int)
param2 = request.args.get('param2', type = int)
if param1 is not None:
if param2 is not None:
cursor.execute("SELECT * FROM table WHERE p1 = %s AND p2 = %s", (str(param1), str(param2)))
else:
cursor.execute("SELECT * FROM table WHERE p1 = %s", (str(param1),))
else:
if param2 is not None:
cursor.execute("SELECT * FROM table WHERE p2 = %s", (str(param2),))
else:
cursor.execute("SELECT * FROM table")
很容易看出,可能的 SQL 语句的数量是参数数量的 2 倍,这超出了控制范围……所以,再次,在不使用字符串操作来自定义构建 sql 查询的情况下,是否有成语或模式用于以更优雅的方式完成此任务?谢谢。
【问题讨论】:
-
请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange (SE) 网络上发帖,您已根据 CC BY-SA license 授予 SE 分发内容的不可撤销权利(即无论您未来的选择如何)。根据 SE 政策,分发非破坏版本。因此,任何破坏行为都将被撤销。请参阅:How does deleting work? …。如果允许删除,则帖子下方左侧有一个“删除”按钮,但仅在浏览器中,而不是移动应用程序中。
标签: mysql sql rest flask flask-restful