2016-07-29 10 views
1

私はPythonとFlaskの生態系の初心者で、研究プロジェクト用の小さな概念実証Webアプリケーションを作成しようとしています。私はDebian Linux 7.9、PostgreSQL 9.5、SQLAlchemy(最新)、Flask-AppBuilder(最新)を使用しています。手動でモデルを作成するのは面倒でエラーが起こりやすいので、私は偉大なインターネットを検索し、flask-sqlacodegenプロジェクトを発見しました(これはFlaskユーザーのために改良されたsqlacodegenのフォークです)。私はGitHubからflask-sqlqcodegenをインストールしました(クローンされたレポ、その後python setup.py installを実行しました)。しかし、モデルを生成するためにこのモデルを使用しようとすると、次のようにエラーが発生します。flask-sqlqcodegenを使用したFlask-AppBuilderのモデルの生成

> sqlacodegen postgresql+psycopg2://USER:[email protected]/DBNAME --flask 

Traceback (most recent call last): 
    File "/usr/local/bin/sqlacodegen", line 9, in <module> 
    load_entry_point('sqlacodegen==1.1.5.pre2', 'console_scripts', 'sqlacodegen')() 
    File "/usr/local/lib/python2.7/dist-packages/sqlacodegen-1.1.5.pre2-py2.7.egg/sqlacodegen/main.py", line 57, in main 
    args.flask, fkcols) 
    File "/usr/local/lib/python2.7/dist-packages/sqlacodegen-1.1.5.pre2-py2.7.egg/sqlacodegen/codegen.py", line 597, in __init__ 
    model = ModelClass(table, links[table.name], inflect_engine, not nojoined) 
    File "/usr/local/lib/python2.7/dist-packages/sqlacodegen-1.1.5.pre2-py2.7.egg/sqlacodegen/codegen.py", line 319, in __init__ 
    relationship_ = ManyToOneRelationship(self.name, target_cls, constraint, inflect_engine) 
    File "/usr/local/lib/python2.7/dist-packages/sqlacodegen-1.1.5.pre2-py2.7.egg/sqlacodegen/codegen.py", line 455, in __init__ 
    colname = constraint.columns[0] 
    File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/_collections.py", line 194, in __getitem__ 
    return self._data[key] 
KeyError: 0 

何が起こっていますか?どんな助けでも大歓迎です。

答えて

1

インターネットで検索したところ、GitHubで問題を見つけましたが、これは全く同じ問題を説明しました。しかし、当時の最新の勧告では、元のものではなく別のエラーが発生しました。著者flask-sqlcodegendiscussionには、明らかに問題を解決する必要があるプロジェクトコントリビュータによって親切に提供されるプルリクエスト(PR)が存在するように見えました。私のローカルリポジトリを更新し、ソフトウェアを再構築して再インストールした後、自分のデータベースのモデルを正常に生成することができました。全体のプロセスは、以下の手順で構成されています。

  1. ローカルリポジトリがflask-sqlcodegenのディレクトリに変更します。
  2. 変更した場合は、私の場合のように変更してください:git stash
  3. 更新レポ:git pull origin master(現在はそのPRが含まれています)。
  4. ソフトウェアの再構築/インストール:python setup.py install
  5. 以前の変更が必要な場合は、git stash popを復元してください。それ以外の場合は、破棄してください。git reset --hard
  6. Flaskアプリケーションディレクトリに移動し、次のようにモデルを自動生成します。

    sqlacodegen --flask --outfile models.py postgresql+psycopg2://USER:[email protected]/DBNAME

謝辞:ビッグその貴重なプル要求のための素晴らしいソフトウェアおよび迅速な&有用なフィードバックのためだけでなく、AlisdairベンにカミルSindi(flask-sqlcodegenの作者)へお願いします。

関連する問題