2010-08-26 6 views
14

je veux faire quelque chose comme ceci:Sélectionnez comme dans sqlalchemy

select username, userid, 'user' as new_column from users_table. 

Les colonnes du tableau peut être sélectionné à l'aide sqlalchemy comme suit:

query = select([users_table.c.username, users_table.c.userid]) 

Comment puis-je la sélection x comme col_x à la question dans sqlalchemy?

+0

Je ne suis pas sûr que vous pouvez faire des alias de noms de colonnes sans entrer en SQL brut. Pourquoi voudriez-vous faire cela? –

+0

Je veux faire l'union de cette requête avec une autre requête qui a une colonne avec le nom 'new_column' – user401574

+0

Cette question apparaît comme un résultat supérieur pour ["Renommer la colonne dans la requête SQLAlchemy" sur Google] (https://www.google .com/search? q = renommer + colonne + dans + query + sqlalchemy) mais ne pose pas réellement cette question. La question semble avoir plus à voir avec la création d'une colonne littérale que de renommer une colonne existante. La réponse la mieux notée, répond à la requête Google, mais pas la meilleure estimation de la question des auteurs. Tout cela combiné avec aucun des liens vers docs fonctionnant plus et modifié les API, je pense que cela est mieux archivé/fermé pour éviter toute confusion. –

Répondre

0
+0

['alias()'] (http://docs.sqlalchemy.org/en/latest/core/selectable.html?highlight=alias#sqlalchemy.sql.expression.alias) pour autant que je sache, c'est pour le crénelage Des clauses 'FROM' comme des tables, des sous-requêtes, etc. (par exemple:' FROM foo as bar'). Pour les clauses SELECT comme les colonnes, les agrégats, etc. en utilisant [.label ('new_name')] (http://docs.sqlalchemy.org/en/latest/core/metadata.html?highlight=label#sqlalchemy.schema.Column. label) comme mentionné ci-dessus est la réponse –

3

literal_column Peut-être?

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

Voir http://www.sqlalchemy.org/docs/reference/sqlalchemy/expressions.html#sqlalchemy.sql.expression.literal_column

Edit: en fait je aurais dû dire "littérale":

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

literal_column() est plus approprié ici sauf si l'utilisateur veut qu'un paramètre bind soit généré. Donc, votre première réponse est correcte. – zzzeek

26

utiliser ceci: users_table.c.userid.label('NewColumn')

dire,

query = select([users_table.c.username, users_table.c.userid.label('NewColumn')]) 

évalue à:

SELECT username , userid as NewColumn From MyTable;