- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是数据库设计和网页设计的新手,所以请多多包涵。
我有一个 Flask 应用程序,我需要使用 flask-sqlalschemy 根据 url 中传递的参数在数据库中搜索,例如:
.../index?part_number=123*321$description1=&description2=TestText
星号将被解释为一个或多个字符,而 ** 将被解释为单个字符。所以我将用 % 和 _ 替换它们,并终止任何特殊字符。
我的问题是:在数据库中,有些字段会是空字符串,有些会是 Null。但我需要将它们都解释为空字符串,以便在 arg 为空或 * 时返回它们。
我知道我可以按照 .like(part_number == None | part_number == '%')
的方式做一些事情。但我只想在搜索字符串为 * 的情况下执行此操作,但是当我有 10 个不同的参数时,我该如何巧妙地执行此操作?
这是相关代码的片段和简化版本。我不太确定如何制作一个可以自行运行的小程序进行测试。
filter_args = ['part_number', 'description1', 'description2'] # actual code has ~10 args
filters = dict()
for arg in filter_args:
filter_str = request.args.get(arg, type=str, default='*') # get filter arg from url
filter_str = '*' if filter_str == '' else filter_str # if the filter string is empty, search for all
# Replace * by % and ** by _ and terminate special chars
filter_str = filter_str.replace('\\', '\\\\')
filter_str = filter_str.replace('%', '\%')
filter_str = filter_str.replace('_', '\_')
filter_str = filter_str.replace('**', '_')
filter_str = filter_str.replace('*', '%')
filters[filter_name] = filter_str
parts = Part.query.filter(
Part.part_number.ilike(filters['part_number']), # and
Part.description1.ilike(filters['description1']), # and
Part.description2.ilike(filters['description2'])
).order_by(Part.part_number)
最佳答案
COALESCE function返回不计算为 NULL(或 NULL,如果所有值都计算为 NULL)的第一个参数表达式的值。因此,如果您想将 NULL 部件号视为空字符串,您可以这样做
func.coalesce(Part.part_number, '').ilike(filters['part_number'])
关于python - 使用 SQLAlchemy 查询空字符串或 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50163249/
我正在尝试创建一个程序,其中字符串的前三个字符重复给定次数,如下所示: foo('Chocolate', 3) # => 'ChoChoCho' foo('Abc', 3) # => 'AbcAbcA
我有以下字符串: std::string str = "Mode:AAA:val:101:id:A1"; 我想分离一个位于 "val:" 和 ":id" 之间的子字符串,这是我的方法: std::st
DNA 字符串可以是任意长度,包含 5 个字母(A、T、G、C、N)的任意组合。 压缩包含 5 个字母(A、T、G、C、N)的 DNA 字母串的有效方法是什么?不是考虑每个字母表 3 位,我们可以使用
是否有一种使用 levenstein 距离将一个特定字符串与第二个较长字符串中的任何区域进行匹配的好方法? 例子: str1='aaaaa' str2='bbbbbbaabaabbbb' if str
使用 OAuth 并使用以下函数使用我们称为“foo”(实际上是 OAuth token )的字符串加密 key public function encrypt( $text ) { // a
我是一名优秀的程序员,十分优秀!