托管烧瓶 API

Hosting flask API

如果我的某些术语在这里不正确,请原谅我,我是新手。

我已经构建了一个 python-flask API 从我的 PostgreSQL 数据库获取数据。我试图让我的 API 托管在 Heroku 上,但我认为它不成功,因为我的 API 使用我的 postgres 用户名和密码连接到本地主机。在 Heroku 上托管我的 API 之前,我需要先托管我的数据库吗?

谢谢

app.py

import pandas as pd
import psycopg2
import sqlalchemy
from sqlalchemy import create_engine
from flask import Flask, jsonify, request, render_template
from flask_cors import CORS
from fuzzywuzzy import fuzz

# Postgres username, password, and database name
username = 'postgres'
password = 'XXXXXXXXXX' # postgres password
host = 'localhost'
port = '5432'
database = 'test'

# string that contains necessary postgres login info
postgres_str = ('postgresql://{username}:{password}@{ipaddress}:{port}/{database}'
                .format(username=username,
                        password=password,
                        ipaddress=host,
                        port=port,
                        database=database
                        ))
               
# create the connection
conn = create_engine(postgres_str)

app = Flask(__name__)
CORS(app=app)

@app.route('/bamboo/<product>', methods=['GET'])
def getProducts(product):

    # GET request
    if request.method == 'GET':
        
        query = """select a.*, b.logo
                   from products a
                   left join companies b on a.company_name = b.company_name
                   where CAST(product_price as int) != 0
                   """
        
        df = pd.read_sql_query(query, conn)

        final_results = df.to_json(orient='records')

        return final_results  # serialize and use JSON headers


if __name__ == '__main__':
    # run!
    app.run()

是的。您需要先托管数据库。您可以为此使用 Heroku CLI

因此,首先进入您的终端并使用以下命令登录您的 Heroku 帐户并按 Enter,您将看到一条包含您的帐户名的成功登录消息。

$ heroku login

现在使用以下命令为您的应用创建数据库,

$ heroku addons:create heroku-postgresql:hobby-dev --app app_name

创建数据库后,使用以下命令获取数据库的 URL,

$ heroku config --app app_name

更多信息请参考this and this