栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在SQLAlchemy中动态构造过滤器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在SQLAlchemy中动态构造过滤器

如果这对某人有用,这就是我最终要做的事情:

from flask import requestclass Parser(object):  sep = ';'  # ...  def filter_query(self, query):    model_class = self._get_model_class(query) # returns the query's Model    raw_filters = request.args.getlist('filter')    for raw in raw_filters:      try:        key, op, value = raw.split(self.sep, 3)      except ValueError:        raise APIError(400, 'Invalid filter: %s' % raw)      column = getattr(model_class, key, None)      if not column:        raise APIError(400, 'Invalid filter column: %s' % key)      if op == 'in':        filt = column.in_(value.split(','))      else:        try:          attr = filter( lambda e: hasattr(column, e % op), ['%s', '%s_', '__%s__']          )[0] % op        except IndexError:          raise APIError(400, 'Invalid filter operator: %s' % op)        if value == 'null':          value = None        filt = getattr(column, attr)(value)      query = query.filter(filt)    return query

这涵盖了所有SQLAlchemy列比较器:

  • eq
    对于
    ==
  • lt
    对于
    <
  • ge
    对于
    >=
  • in
    对于
    in_
  • like
    对于
    like
  • 等等

详尽列表及其相应名称可在此处找到。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/660571.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号