You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLAlchemy filter是否支持多参数?解析notin_用法

问题解答

关于filter()传入多个参数的原因

  • SQLAlchemy的filter()方法支持传入任意数量的布尔表达式参数,这些参数会被自动转换为SQL中的AND逻辑关联条件。
  • 这是框架提供的语法糖,和显式使用and_(条件1, 条件2)的效果完全一致,但写法更简洁直观。
  • 你的代码里,Question.id.notin_(previous_questions)和Question.category == category_id两个条件,最终会生成类似WHERE question.id NOT IN (...) AND question.category = ?的SQL语句,只有同时满足两个条件的记录才会被筛选出来。

关于notin_()的含义

  • notin_()是SQLAlchemy列对象的内置方法,专门用来生成SQL中的NOT IN查询条件。
  • 它接收一个可迭代对象(比如列表、元组、集合,甚至是另一个子查询)作为参数,作用是筛选出当前列的值不在该参数范围内的记录。
  • 对应你代码的场景:previous_questions应该是一个包含若干id值的集合,Question.id.notin_(previous_questions)就是要排除所有id在这个集合里的Question,只保留id不在其中的记录。

内容的提问来源于stack exchange,提问作者dotnet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:45:47