Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在where子句-SQLalchemy中为case语句生成别名_Python_Sql_Sqlalchemy - Fatal编程技术网

Python 在where子句-SQLalchemy中为case语句生成别名

Python 在where子句-SQLalchemy中为case语句生成别名,python,sql,sqlalchemy,Python,Sql,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 query = select(['*', cas

我需要使用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
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
现在,我用SQLAlchemy这样做:

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
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
但是,我没有设法添加另一个别名函数,以使我添加的计算列像我希望的那样被称为kid。SQLAlchemy为其生成自己的别名

我试过:

query = select(['*', case([(alias(Column('age').op('<')(18), name='kid'), 1)], else_=0)])
以及:

没有成功。
有什么想法吗?

就像我在评论中说的,我不熟悉sqlalchemy。但也许这会帮助你:

query = select(['*', case([(Column('age').op('<')(18), 1)], else_=0).label("kid")])
query.select_from(alias(select([*]), name='dataset')) 

但我真的不确定这里的语法是否正确。也可以在这里查看:

Case expression@jarlh请详细说明Case expression返回的值,就像您使用它一样。case语句用于有条件地执行代码,例如在存储过程中,并且不返回任何值。expression语句这如何帮助我为该列添加别名?我不喜欢sqlalchemy,但也许您可以为该列使用label:alias在From子句中使用,例如,为我所要查找的表添加别名。