热门标签:
Q:

使用flask-sqlqcodegen为Flask-AppBuilder生成模型

我是Python和Flask生态系统的初学者,试图为一个研究项目创建一个小型的概念验证Web应用程序。 我正在使用Debian Linux7.9,PostgreSQL9.5,SQLAlchemy(最新)和Flask-AppBuilder(最新)。 由于手动创建模型繁琐且容易出错,我在强大的互联网上搜索并发现了flask-sqlacodegen项目(请注意,这是sqlacodegen的分支,具有针对Flask用户的改进功能)。 我从GitHub安装flask-sqlqcodegen(克隆回购,然后运行python setup.py install)。 但是,当尝试使用它来生成模型时,它会产生错误,如下所示:

> sqlacodegen postgresql+psycopg2://USER:PASS@HOST/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

这是怎么回事? 任何帮助将不胜感激。

原网址
A:

在一些互联网搜索时,我在GitHub上遇到了一个问题,该问题描述了完全相同的问题。 然而,当时最新的建议产生了另一个错误,而不是原来的错误。 在与flask-sqlcodegen作者的讨论中,似乎存在由项目贡献者提供的拉取请求(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:PASS@HOST/DBNAME

致谢:非常感谢Kamil Sindi(flask-sqlcodegen的作者)提供的优秀软件和rapid&amp;有用的反馈,以及Alisdair Venn提供的有价值的拉取请求。

相似问题