2016-07-29 1 views
1

저는 연구 프로젝트 용으로 작은 개념 증명 웹 응용 프로그램을 만들기 위해 Python 및 Flask 에코 시스템의 초보자입니다. 데비안 리눅스 7.9, PostgreSQL 9.5, SQLAlchemy (최신), Flask-AppBuilder (최신)를 사용하고 있습니다. 수동으로 모델을 만드는 것은 지루하고 오류가 발생하기 쉽기 때문에 강력한 인터넷을 검색하여 flask-sqlacodegen 프로젝트를 발견했습니다.이 작업은 Flask 사용자를위한 향상된 기능이 포함 된 sqlacodegen의 포크입니다. 나는 GitHub (복제 된 repo에서 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. 로컬 repo가 ​​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

감사 : 빅은 좋은 소프트웨어 및 빠른 & 도움이 의견을뿐만 아니라 엘리스 데어 벤에 관한 가치있는 풀 요청에 대한 카밀 Sindi에합니다 (flask-sqlcodegen의 저자)에 감사드립니다.