选择sqlalchemy中的

use*_*574 22 python sqlalchemy

我想做这样的事情:

select username, userid, 'user' as new_column  from  users_table.
Run Code Online (Sandbox Code Playgroud)

可以使用sqlalchemy选择表的列,如下所示:

query = select([users_table.c.username, users_table.c.userid])
Run Code Online (Sandbox Code Playgroud)

我该怎么做选择xcol_x在SQLAlchemy的查询?

pyl*_*ver 45

用这个: users_table.c.userid.label('NewColumn')

query = select([users_table.c.username, users_table.c.userid.label('NewColumn')])
Run Code Online (Sandbox Code Playgroud)

评估为:

SELECT username , userid as NewColumn From MyTable;
Run Code Online (Sandbox Code Playgroud)


Mar*_*ano 5

也许literal_column?

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

参见https://docs.sqlalchemy.org/zh/13/core/sqlelement.html#sqlalchemy.sql.expression.literal_column

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

query = select([users_table.c.username, users_table.c.userid, literal("user", type_=Unicode).label('new_column')])
Run Code Online (Sandbox Code Playgroud)

  • 除非用户希望生成绑定参数,否则literal_column()在此处更为合适。所以你的第一个答案是正确的。 (5认同)

Rad*_*ski -2

请参阅alias()此处的文档:https://docs.sqlalchemy.org/en/14/core/selectable.html ?highlight=alias#sqlalchemy.sql.expression.Alias

  • [`alias()`](http://docs.sqlalchemy.org/en/latest/core/selectable.html?highlight=alias#sqlalchemy.sql.expression.alias) 据我所知是用于别名 ` FROM` 子句,如表、子查询等(例如:`FROM foo as bar`)。对于列、聚合等 SELECT 子句,使用 [.label('new_name')](http://docs.sqlalchemy.org/en/latest/core/metadata.html?highlight=label#sqlalchemy.schema.Column。标签)如上所述就是答案 (2认同)