Heroku 托管烧瓶应用程序与 MySQL 抛出错误

Posted

技术标签:

【中文标题】Heroku 托管烧瓶应用程序与 MySQL 抛出错误【英文标题】:Heroku hosting flask app with MySQL throwing errors 【发布时间】:2016-02-08 05:50:22 【问题描述】:

我是 Flask 和 heroku 的新手,但我构建了一个简单的应用程序并使用 SQLite 将其推送到 heroku。将应用程序迁移到远程 mysql 数据库后,我注意到无法运行应用程序,因为我收到以下错误:

ImportError: No module named MySQLdb

在我found周围搜索后发现这个错误是因为我需要安装pip install mysql-python

但是,我的requirements.txt 文件已经包含mysql-python

$ pip freeze

Flask==0.10.1
Flask-Login==0.3.2
Flask-Migrate==1.6.0
Flask-SQLAlchemy==2.1
Flask-Script==2.0.5
Jinja2==2.8
Mako==1.0.3
MarkupSafe==0.23

MySQL-python==1.2.5

PyYAML==3.11
SQLAlchemy==1.0.9
Werkzeug==0.10.4
...

当我在 heroku 上运行 bash 时,它说我已经满足了要求:

~ $ heroku run bash
Running bash on blank-places-7646... up, run.9708

~ $ pip install mysql-python
Requirement already satisfied (use --upgrade to upgrade): mysql-python in ./.heroku/python/lib/python2.7/site-packages

~ $ pip freeze
alembic==0.8.3
Flask==0.10.1
Flask-Login==0.3.2
Flask-Migrate==1.6.0
Flask-Script==2.0.5
Flask-SQLAlchemy==2.1
itsdangerous==0.24
Jinja2==2.8
Mako==1.0.3
MarkupSafe==0.23
MySQL-python==1.2.5
pbr==1.8.1
python-editor==0.4
SQLAlchemy==1.0.9
stevedore==1.9.0
Werkzeug==0.10.4

~ $ pip install mysql-python --upgrade
Requirement already up-to-date: mysql-python in ./.heroku/python/lib/python2.7/site-packages

我哪里错了?

【问题讨论】:

您的应用程序运行情况如何?您似乎没有在尝试运行该应用程序的同一 Python 上安装该软件包。 heroku 的默认数据库是 PostgreSQL。对于我的 [经验](***.com/questions/33180337/…) 和很多 [人] (grimoire.ca/mysql/choose-something-else),MySQL 很糟糕。试试看 Heroku 自动识别应用程序 (devcenter.heroku.com/articles/getting-started-with-python-o) 但我不应该能够使用我想要的任何数据库吗? 我认为 Postgres 开箱即用。要使用 MySQL,您需要一个可能付费的插件插件。我不知道你需要检查它。运行“heroku config”以检查您的服务器上是否还没有运行 Postgres 数据库。我基本上将heroku与JAVA一起使用。至少在 Java 世界中是这样的。 它识别语言,而不是 db btw。 【参考方案1】:

MySQL 是 Heroku 上的插件,因此请尝试安装 ClearDB。

heroku addons:add cleardb

https://elements.heroku.com/addons/cleardb

【讨论】:

明白。但我想访问远程 MySQL 数据库,但无法安装 mysql-python【参考方案2】:

什么对我有用: 我将 MySQL 连接移到了一个单独的文件中,并在那里进行了计算。将结果以 json 格式返回到主路由文件。

我怀疑 heroku 不会将所有 MySQL 连接放在您设置了路由的同一个文件中。

【讨论】:

以上是关于Heroku 托管烧瓶应用程序与 MySQL 抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Heroku 访问远程 MySQL 数据库?

如何解决烧瓶应用程序的heroku部署错误

捕获烧瓶应用程序中的所有路径

Heroku SSL 连接错误不支持的协议

烧瓶应用程序数据库数据会在一段时间后自动删除,这些数据部署在 heroku 中

会话不可用,因为没有设置密钥。将应用程序上的 secret_key 设置为唯一且机密的东西。烧瓶/Heroku