如果我的一些术语在这里不合适,请原谅我,我对这一切都不熟悉。
我已经构建了一个从我的 PostgreSQL 数据库中获取数据的 python-flask API。我试图让我的 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()
答案 0 :(得分:0)
是的。您需要先托管数据库。为此,您可以使用 Heroku CLI。
因此,首先进入您的终端并使用以下命令登录您的 Heroku 帐户并按 Enter,您将看到一条包含您的帐户名称的成功登录消息。
$ heroku login
现在使用以下命令为您的应用创建一个数据库,
$ heroku addons:create heroku-postgresql:hobby-dev --app app_name
现在,在创建数据库后,使用以下命令获取数据库的 URL,
$ heroku config --app app_name