使用SQLAlchemy查询空字符串或Null

2024-09-26 22:13:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我对数据库设计和网页设计还不熟悉,所以请耐心等待。在

我有一个Flask应用程序,需要根据url中传递的参数在数据库中搜索,使用Flask sqlalschemy,例如:

.../index?part_number=123*321$description1=&description2=TestText

星号将被解释为一个或多个字符,**将被解释为单个字符。所以我会用%和\来替换它们,并终止任何特殊的字符。在

我的问题是:在数据库中,有些字段将是空字符串,有些字段将为空。但我需要将它们都解释为空字符串,以便在arg为空或*时返回它们。在

我知道我可以按照.like(part_number == None | part_number == '%')的思路做一些事情。但是我只想在搜索字符串是*的情况下这样做,但是当我有10个不同的参数,所有的和'ed在一起时,我该怎么做呢?在

下面是相关代码的片段和简化版本。我不太清楚如何制作一个可以在自己内部运行以进行测试的小程序。在

^{pr2}$

Tags: 字符串数据库应用程序url网页flasknumber参数
2条回答

当我遇到这个问题时,我正在寻找一种过滤空字符串或空字符串的方法。虽然Ilja的回答对于OP问题的细节是正确的,我想我应该补充一下,coalesce函数也适用于我的情况。如果OP正在查找零件编号为“无”或为空的行:

Pat.query.filter(func.coalesce(Part.part_number, '') == '')

COALESCE function返回第一个参数表达式的值,该表达式的计算结果不是NULL(如果所有值都计算为NULL,则返回NULL)。因此,如果您希望将空的部件号视为空字符串,可以这样做

func.coalesce(Part.part_number, '').ilike(filters['part_number'])

相关问题 更多 >

    热门问题