如何在 Heroku 上部署包含 MySQLdb 代码的 Flask REST API?
How to deploy a Flask REST API containing MySQLdb code on Heroku?
大多数教程只展示了如何在 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 上部署此类应用程序?
确保您的依赖项在 requirements.txt
或 Pipfile
和 Pipfile.lock
中列出。
Select a MySQL addon 并提供它,例如
heroku addons:create cleardb:ignite
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。
部署。
假设你有它们,运行 你通过 heroku run
在 Heroku 上迁移。如果您不使用迁移库,我强烈建议您开始。 Flask-Migrate 可能很合适。
另一种方法是跨环境手动创建和维护架构,time-consuming,容易出错,令人沮丧。
大多数教程只展示了如何在 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 上部署此类应用程序?
确保您的依赖项在
requirements.txt
或Pipfile
和Pipfile.lock
中列出。Select a MySQL addon 并提供它,例如
heroku addons:create cleardb:ignite
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。
部署。
假设你有它们,运行 你通过
heroku run
在 Heroku 上迁移。如果您不使用迁移库,我强烈建议您开始。 Flask-Migrate 可能很合适。另一种方法是跨环境手动创建和维护架构,time-consuming,容易出错,令人沮丧。