2017-10-10 3 views
2

Je génère automatiquement des tables dans postgresql et les modèles sont générés automatiquement en utilisant sqlacodegen en utilisant les noms d'une liste.SyntaxError: caractère non valide dans l'identificateur lors de l'importation de modèles générés à l'aide de sqlacodegen

Certains des noms sont des caractères non-ASCII. Pour le nom aussieBabe qui a créé une table aussieBabe_index pour laquelle le modèle sqlAlchemy est aussieBabeIndex. mais quand j'essaye d'importer ces modèles pour l'interrogation je reçois l'erreur ci-dessous. Je suppose que cela peut être résolu en supprimant les caractères non valides avant de créer la table ou de restreindre le nom de la classe. Je veux limiter le nom de classe qui est généré par sqlacodegen, comment puis-je y parvenir? ou puis-je définir l'encodage Unicode pour le code?

+1

poster un bug sur le tracker de problème! –

+1

Si vous ne pouvez pas attendre une correction de bogue, il peut être utile de changer '_re_invalid_identifier' dans https://github.com/agronholm/sqlacodegen/blob/master/sqlacodegen/codegen.py; ou peut-être même l'exécuter sous Python2 pour éviter complètement les caractères Unicode dans les identifiants. – snakecharmerb

+0

Va poster un rapport de bug, pour l'instant je vais suivre la suggestion de @snakecharmerb pour changer '_re_invalid_identifier' – Harwee

Répondre

1

Votre nom de table contient des caractères que même Python 3 n'autorisera pas. Vous devez corriger le nom de la classe à la main. On ne peut pas s'attendre à ce que SQLACodegen produise des résultats parfaits, comme l'indique sa documentation.