2010-07-30 60 views
0

Je me connecte à une base de données MS SQL Server à partir de Python sous Linux. Je me connecte via pyodbc en utilisant le pilote FreeTDS. Quand je renvoie un champ d'argent à partir de MSSQL, il apparaît comme un flottant, plutôt que comme un décimal Python.FreeTDS traduire le type d'argent MS SQL en float python, pas Decimal

Le problème est avec FreeTDS. Si je cours exactement le même code Python à partir de Windows (où je n'ai pas besoin d'utiliser FreeTDS), pyodbc retourne un décimal Python.

Comment puis-je récupérer un décimal Python lorsque j'utilise le code sous Linux?

+0

Utilisez-vous unixODBC? Je me demande si le problème pourrait être là, je suis sûr que FreeTDS supporte le type décimal/argent. – Mark

+0

Je pourrais être. Je rentre à la maison pour le week-end maintenant, je vais vérifier dans ce lundi. Merci pour le conseil. – mwolfe02

+0

OK, j'utilise unixODBC. Je pense que le problème a pu être dans mon fichier freetds.conf. Je viens de changer la version de tds de 4.2 à 8.0, mais je ne sais pas ce que je dois faire pour que le changement prenne effet. Dois-je redémarrer Apache? Redémarrer autre chose? – mwolfe02

Répondre

0

Il était un bogue dans FreeTDS. Le bug a été corrigé dans la version CVS de FreeTDS à partir du 4 août 2010 (merci Freddy Ziglio). Voir my post sur le babillard web2py pour plus d'informations.

1

Vous pouvez toujours simplement le convertir en décimal quand il revient ...

+0

Cela finit par être beaucoup de conversions et n'est pas exactement DRY. Je suis d'accord que c'est le plan de repli, mais j'aimerais vraiment éviter cela. – mwolfe02