python - 在 where 子句中为 case 语句创建别名 - SQLalchemy
问题描述
我需要使用 SQLAlchemy 在我的 SQL 查询中创建一个计算列。我想得到的查询将如下所示:
SELECT *, CASE WHEN (age < 18) THEN 1 ELSE 0 END AS kid
FROM (SELECT TEST_TABLE.index AS index, TEST_TABLE.age AS age, TEST_TABLE.letter AS letter
FROM TEST_TABLE) AS dataset
现在,我设法用 SQLAlchemy 做到了,如下所示:
query = select(['*', case([(Column('age').op('<')(18), 1)], else_=0)])
query.select_from(alias(select([*]), name='dataset')) # I actually pass different params here, but this is an example
但是我没有设法放置另一个 alias() 函数来使我添加的计算列像我想要的那样被称为“孩子”。SQLAlchemy 会为其生成自己的别名。
我试过:
query = select(['*', case([(alias(Column('age').op('<')(18), name='kid'), 1)], else_=0)])
和:
query = select(['*', alias(case([(Column('age').op('<')(18), 1)], else_=0), name='kid')])
那里没有成功。有任何想法吗?
解决方案
就像我在评论中说的那样,我不熟悉 sqlalchemy。但也许这会帮助你:
query = select(['*', case([(Column('age').op('<')(18), 1)], else_=0).label("kid")])
query.select_from(alias(select([*]), name='dataset'))
但我真的不确定语法是否在这里。也许也看这里:Using alias() for 'select as' in SQLAlchemy
推荐阅读
- angular - 如何隐藏角度 4/6 剑道网格数字过滤器增加减少图标?(纺纱机)
- php - 来自 onclick 输入的 PHP 值
- python - 多次扭曲的 Web 服务器处理请求
- c# - 如何以编程方式在特定页面上打开 Visual Studio 工具->选项对话框?
- javascript - React 功能组件:返回嵌套对象数组中的数组列表
- html - 当我将鼠标悬停在 chrome 中的自动完成项目上时,如何禁用输入标签的样式更改?
- python - 如何在 PyOpenGL 中将 png 图像作为图像叠加层?
- android - 当浮动操作按钮位于布局中时,Android Studio 预览不显示
- javascript - 如何将此代码重构为 CommonJS 模块语法?
- scala - 为什么加载 BigQuery 表需要存储桶?