【问题标题】:How do i pass multiple parameters from list in sqlalchemy filter statement如何在 sqlalchemy 过滤器语句中从列表中传递多个参数
【发布时间】:2021-05-28 02:28:06
【问题描述】:

用户返回一个字符串,在哪里解析以在 sqlalchemy 中应用过滤器。 但是参数的数量是未知的。 例如:

def fun_name(user_id, value):
  return db.query(table)
         .filter(or_(table.column_name.like('%'+value+'%')))

如果该值是一个字符串,我可以使用该值应用过滤器,这将起作用。

但是现在我有这种情况:

def fun_name(user_id, values):
  values_lst = values.split(',')
  return db.query(table)
         .filter(or_(table.column_name.like('%'+ values_lst[0] +'%'), 
                     table.column_name.like('%'+ values_lst[1] +'%')))

这只有在拆分有两个参数时才有效, 但是,如果我不知道之前列表的确切大小,我该如何处理?

有没有通用的方法来解析这个?

【问题讨论】:

    标签: python sqlalchemy string-parsing


    【解决方案1】:

    感谢我的朋友,他用答案拯救了我的一天。 解决办法是

    def fun_name(user_id, values):
      values_lst = values.split(',')
      return db.query(table)
             .filter(or_(*[table.column_name.like(f'%{val}%') for val in values_lst]))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 2022-11-14
      • 2023-01-23
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多