Python 在sqlalchemy中选择

Python 在sqlalchemy中选择,python,sqlalchemy,Python,Sqlalchemy,我想这样做: select username, userid, 'user' as new_column from users_table. 可以使用sqlalchemy如下选择表的列: query = select([users_table.c.username, users_table.c.userid]) 如何在sqlalchemy中选择x作为col\u x查询?请参见此处的alias():可能是literal\u列 query = select([users_table.c.us

我想这样做:

select username, userid, 'user' as new_column  from  users_table.
可以使用sqlalchemy如下选择表的列:

query = select([users_table.c.username, users_table.c.userid])
如何在sqlalchemy中选择
x
作为
col\u x
查询?

请参见此处的
alias()

可能是literal\u列

query = select([users_table.c.username, users_table.c.userid, literal_column("user", type_=Unicode).label('new_column')])

编辑: 实际上我应该说“字面上的”:

使用
label(…)
函数:
users\u table.c.userid.label('NewColumn')

i、 e

评估结果为:

SELECT username, userid as NewColumn From MyTable;

我不确定您是否可以在不输入原始SQL的情况下使用列名别名。为什么要这样做?我想将这个查询与另一个查询合并,该查询有一个名为“new_column”的列。这个问题显示为顶部结果,但实际上并没有问这个问题。问题似乎更多的是创建一个文字列,而不是重命名现有列。排名靠前的答案回答了谷歌的查询,但不是作者问题的最佳猜测。所有这些,再加上指向文档的链接不再有效,以及更改的API,我认为这是更好的归档/关闭,以防止更多的混淆。literal_column()在这里更合适,除非用户希望生成绑定参数。所以你的第一个答案是正确的。据我所知,是从子句(如表、子查询等)中为添加别名(例如:从foo as bar中为)。对于列、聚合等SELECT子句,使用如上所述的方法就是答案
query = select([users_table.c.username, users_table.c.userid.label('NewColumn')])
SELECT username, userid as NewColumn From MyTable;