2009-08-04 6 views
3

J'utilise SQLAlchemy pour créer des requêtes indépendantes de la base de données.La fonction to_char indépendante de la base de données dans SQLAlchemy

Je suis confronté à un problème avec la fonction to_char.

Tenir compte de la requête simple comme:

select to_char(id,'999') from xyz 

Il travaille sur Postgres mais MySQL ne supporte pas.

Comment puis-je rendre cette requête indépendante de la base de données à l'aide de SQLAlchemy?

Répondre

0

Vous cherchez format dans MySQL:

select format(id, '999') from xyz 

Pour répondre à votre tout-en-une question: Il n'y a aucun moyen entre bases de données pour le faire. Chaque SGBDR est très différent, et il n'y a pas de réelle standardisation après les requêtes assez simples. Ceci est particulièrement vrai avec les manipulations de cordes.

+0

Je suis d'accord .. u .. je l'ai lu quelque part que l'utilisation sqlalchemy nous pouvons venir la différence. J'ai essayé mais j'ai échoué :( – asb

+0

@asb: Vous devrez malheureusement vérifier le SGBDR que vous utilisez avant de passer l'appel, soit dans la fonction elle-même, soit simplement en utilisant différentes fonctions avec des moteurs différents. – Eric

3

utilisez la fonction CAST pour les conversions de type simple. C'est SQL standard et SQLAlchemy le supporte directement via la fonction cast(): http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/expressions.html?highlight=cast#sqlalchemy.sql.expression.cast. Pour les valeurs de date, SQLA a une fonction extract() qui produit la fonction SQL EXTRACT - une couche de traduction traduit les noms de champs communs comme "month", "day", "minute", etc. en mot-clé approprié pour le backend utilisé.

2

Utilisez la fonction de distribution, par exemple

cast(numberfield as char) 
Questions connexes