【问题标题】:How to deploy a Flask REST API containing MySQLdb code on Heroku?如何在 Heroku 上部署包含 MySQLdb 代码的 Flask REST API?
【发布时间】:2019-10-16 04:39:41
【问题描述】:

大部分教程只展示了如何在 Heroku 上部署一个简单的 Flask hello world 应用。但我有一个 Flask 应用程序,其中包含带有 GET 和 POST 请求的 URL,它们使用 MySQLdb 库从数据库中获取数据。

如何在 Heroku 上设置此类应用程序?目前我的本地机器上有一个 MySQL 数据库,代码使用它来获取数据。 Flask 代码包含许多由 API 调用调用的函数。例如:

@app.route('/display_table', methods=['POST'])
def display_webstats():
    db = MySQLdb.connect("localhost", "root", "root", "db_name")
    cursor = db.cursor()
    cursor.execute("select * from table_name")
    ws = cursor.fetchall()
    return jsonify(ws), 200

如何在 Heroku 上部署此类应用?

【问题讨论】:

    标签: heroku flask mysql-python


    【解决方案1】:
    1. 确保您的依赖项列在requirements.txt 或Pipfile 和Pipfile.lock 中。

    2. 选择MySQL addon 并配置它,例如

      heroku addons:create cleardb:ignite
      
    3. Update your code 连接到由插件提供的任何环境变量提供的数据库,例如CLEARDB_DATABASE_URL。您可以使用 os.getenv() 和 default 参数来回退到您的开发环境中:

      import os
      
      database_url = os.getenv(
          'CLEARDB_DATABASE_URL',
          default='mysql://root:root@localhost/db_name',  # For local development
      )
      

      集中您的数据库连接逻辑可能也是一个好主意,因此不是在每个控制器中都这样做。 Flask-SQLAlchemy 之类的东西可能有助于简化数据库的连接和查询。如果您需要其中之一,它还提供 ORM。

    4. 部署。

    5. 假设你有它们,通过heroku run 在 Heroku 上运行你的迁移。如果您没有使用迁移库,我敦促您开始。 Flask-Migrate 可能很合适。

      另一种方法是跨环境手动创建和维护架构,这既费时又容易出错,而且令人沮丧。

    【讨论】:

      猜你喜欢
      • 2013-09-22
      • 2019-01-19
      • 1970-01-01
      • 2021-08-29
      • 2018-08-02
      • 2021-01-25
      • 2022-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多