【问题标题】:Generating models for Flask-AppBuilder using flask-sqlqcodegen使用 flask-sqlqcodegen 为 Flask-AppBuilder 生成模型
【发布时间】:2016-07-29 11:25:16
【问题描述】:

我是 Python 和 Flask 生态系统的初学者,正在尝试为研究项目创建一个小型的概念验证 Web 应用程序。我正在使用 Debian Linux 7.9、PostgreSQL 9.5、SQLAlchemy(最新)和 Flask-AppBuilder(最新)。由于手动创建模型乏味且容易出错,我搜索了强大的 Internet 并发现了 flask-sqlacodegen 项目(请注意,这是 sqlacodegen 的一个分支,为 Flask 用户提供了改进的功能)。我从 GitHub 安装了flask-sqlqcodegen(克隆了 repo,然后运行了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

发生了什么事?任何帮助将不胜感激。

【问题讨论】:

    标签: python postgresql flask flask-sqlalchemy


    【解决方案1】:

    在一些互联网搜索中,我在 GitHub 上遇到了一个问题,它描述了完全相同的问题。但是,当时最新的建议产生了另一个错误,而不是原来的错误。在flask-sqlcodegen 的作者的discussion 中,似乎存在一个项目贡献者提供的拉取请求(PR),显然应该解决这个问题。在更新我的本地存储库,然后重建和重新安装软件后,我能够成功地为我的数据库生成模型。整个过程由以下步骤组成。

    1. 切换到本地存储库为flask-sqlcodegen 的目录。
    2. 如果您像我一样进行了任何更改,请将它们隐藏起来:git stash
    3. 更新 repo: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 的作者)提供的优秀软件和快速有用的反馈,以及 Alisdair Venn 的宝贵拉取请求。 p>

    【讨论】:

      猜你喜欢
      • 2018-07-13
      • 2019-01-21
      • 2019-07-26
      • 2018-05-21
      • 2016-07-08
      • 2020-12-09
      • 2016-05-31
      • 2021-10-23
      • 1970-01-01
      相关资源
      最近更新 更多