python 托管 flask API

uqjltbpv  于 2023-01-01  发布在  Python
关注(0)|答案(1)|浏览(129)

请原谅我,如果我的一些术语是在这里,我是新的所有这一切。
我已经建立了一个python-flask API,可以从我的PostgreSQL数据库获取数据。我尝试将我的API托管在Heroku上,但我认为这是不成功的,因为我的API使用我的postgres用户名和密码连接到localhost。我是否需要先托管我的数据库,然后才能将我的API托管在Heroku上。
谢啦,谢啦

应用程序.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()
okxuctiv

okxuctiv1#

是的。您需要首先托管数据库。您可以使用Heroku CLI来实现这一点。
因此,首先进入您的终端并使用以下命令登录到您的Heroku帐户,然后按Enter键,您将看到一条包含您的帐户名的成功登录消息。

$ heroku login

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

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

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

$ heroku config --app app_name

请参阅this和此以获取更多信息。

相关问题