Как развернуть API-интерфейс Flask REST, содержащий код MySQLdb, на Heroku? - PullRequest
0 голосов
/ 30 мая 2019

Большинство учебных пособий показывают только, как развернуть простое приложение Flask hello world на Heroku. Но у меня есть приложение Flask, которое содержит URL-адреса с запросами GET и POST, и они используют библиотеку 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?

1 Ответ

1 голос
/ 30 мая 2019
  1. Убедитесь, что ваши зависимости указаны в ваших requirements.txt или Pipfile и Pipfile.lock.

  2. Выберите MySQL addon и предоставьте его, например,

    heroku addons:create cleardb:ignite
    
  3. Обновите свой код , чтобы подключиться к базе данных, предоставляемой любыми переменными среды, которые предоставляет дополнение, например, 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. Deploy.

  5. Если они у вас есть, запустите миграцию на Heroku через heroku run.Если вы не используете библиотеку миграции, я призываю вас начать. Flask-Migrate может подойти.

    Альтернативой является ручное создание и поддержание вашей схемы в разных средах, и это отнимает много времени, подвержено ошибкам и разочаровывает.

...