Flask-SQLAlchemy过滤器和运算符

Mat*_*hew 6 python sqlalchemy operators flask flask-sqlalchemy

Flask-SQLAlchemy提供了筛选查询的选项.您可以通过多种方式筛选查询 - Flask-SQLAlchemy文档提供的示例:

User.query.filter_by(username='peter') # Returns all users named 'peter'
User.query.filter(User.email.endswith('@example.com')) # Returns all users with emails ending in '@example.com'
Run Code Online (Sandbox Code Playgroud)

我还发现这是一对多的关系:

User.query.filter(User.addresses.any(address=address)) # Returns all users who have a particular address listed as one of their addresses
Run Code Online (Sandbox Code Playgroud)

问题:

  • 有谁知道实际可以使用哪些过滤器?我无法在文档中的任何位置找到过滤器列表,这使得查询数据库变得相当困难.
  • 特别是,我会使用什么过滤器来检查用户的电子邮件是否包含在特定的一组电子邮件地址中?

Pao*_*llo 22

有关筛选器列表,请检查SQLAlchemy文档

我将使用什么过滤器来检查用户的电子邮件是否包含在特定的一组电子邮件地址中?

列有一个.in_()在查询中使用的方法.所以类似于:

res = User.query.filter(User.email.in_(('x1@dom1.com', 'x2@dom2.com')))
Run Code Online (Sandbox Code Playgroud)

在这里,您可以找到表达式的列方法列表.

  • 有关`in_`和`endswith`等更多属性,请参阅[Common Filter Operators](http://docs.sqlalchemy.org/en/rel_0_9/orm/tutorial.html#common-filter-operators)和[ColumnOperators]( http://docs.sqlalchemy.org/en/rel_0_9/core/sqlelement.html#sqlalchemy.sql.operators.ColumnOperators). (5认同)