【问题标题】:How does sqlachemy query method work?sqlalchemy 查询方法是如何工作的?
【发布时间】:2013-03-29 10:51:26
【问题描述】:

我正在学习 sqlachemy,我对 Python 比较陌生。

当我阅读它的文档时,我看到了this kind of usage,例如:

query.filter(User.name == 'ed')

Python 不会评估表达式User.name == 'ed',然后将结果(一个布尔值)传递给query.filter 方法吗?

这种语法是如何工作的? Python 是否支持某种类型的运算符覆盖,例如 C++?

【问题讨论】:

标签: python syntax sqlalchemy


【解决方案1】:

SQLAlchemy 使用各种special method hooks 来重载运算符行为。

对于==__eq__() 方法返回编译时表示 SQL 表达式的特殊对象。引用有关“丰富比较”挂钩的文档:

按照惯例,返回FalseTrue 以表示成功比较。但是,这些方法可以返回任何值,因此如果在布尔上下文中使用比较运算符(例如,在 if 语句的条件下),Python 将在该值上调用 bool() 以确定结果是否为真或假。

请参阅 SQLAlchemy 源代码中的 ColumnOperators class 以了解实现的特定挂钩。

【讨论】:

    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-11
    • 2020-07-26
    • 2018-11-25
    • 2019-09-25
    相关资源
    最近更新 更多