在SQLAlchemy Core中使用IFNULL

8

我将使用SQLAlchemy core从一个mysql表中选择行,使用IFNULL函数。

假设有如下表:

id    int1    string1   other
1      7        NULL    other stuff
2      NULL     bar     more stuff 

SQL语句应该是这样的:

SELECT IFNULL(int1, 0) AS int1, IFNULL(string1, '') AS string1 FROM table

这是否可以使用核心实现?最好的情况是类似以下示例:
s = select(ifnull(table.c.int1, 0), ifnull(table.c.string1, ''))
2个回答

17

PostgreSQL 不支持 if null。

你可以使用 func.coalesce() 代替 ifnull()。

语法 -

  func.coalesce(Table.field, default_value)

例子 -

 func.coalesce(Order.price, 0)

 func.coalesce(Student.name, ' ')

9
您应该可以像这样使用 sqlalchemy.sql 中的 func 来执行任意数据库函数(我认为 ifnull 是依赖于数据库的,我在 postgresql 中使用 coalesce):
from sqlalchemy.sql import select, func
# assuming you have imported table from somewhere!!


s = select([func.ifnull(table.c.int1, 0), func.ifnull(table.c.string1, '')])

你正在使用哪个版本?我正在使用SQLAlchemy==1.0.5,我想func至少从0.4版本就已经存在了。 - Ian Wilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接