2017-10-10 9 views
2

私はpostgresqlでテーブルを自動生成しており、リストから名前を使用してモデルをsqlacodegenで自動生成します。SyntaxError:sqlacodegenを使用して生成されたモデルをインポートするときに識別子の文字が無効

一部の名前は非ASCII文字です。名前aussieBabeの場合、テーブルaussieBabe_indexが作成され、sqlAlchemyモデルはaussieBabeIndexです。しかし、これらのモデルをクエリのためにインポートしようとすると、私はエラー以下になります。

line 147 
    class aussieBabeIndex(Base): 
          ^
SyntaxError: invalid character in identifier 

これは、テーブルを作成する前に無効な文字を削除するか、クラス名を制限することで解決できるとします。 sqlacodegenによって生成されるクラス名を制限したいのですが、これをどのように達成できますか?コードに対してUnicodeエンコードを設定できますか?

+1

問題トラッカーにバグを投稿してください! –

+1

バグ修正を待つことができない場合は、https://github.com/agronholm/sqlacodegen/blob/master/sqlacodegen/codegen.pyの '_re_invalid_identifier'を変更すると便利です。 Python2の下でそれを実行して、識別子のUnicode文字を完全に避けることさえできます。 – snakecharmerb

+0

バグレポートを投稿します。今度は、 '_re_invalid_identifier'を変更するための@snakecharmerbの提案に従います。 – Harwee

答えて

1

テーブル名には、Python 3でさえ許されない文字が含まれています。クラス名は手作業で修正する必要があります。 SQLACodegenは完全な結果を生成することは期待できません。

関連する問題