请原谅我,如果我的一些术语是在这里,我是新的所有这一切。
我已经建立了一个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()
1条答案
按热度按时间okxuctiv1#
是的。您需要首先托管数据库。您可以使用Heroku CLI来实现这一点。
因此,首先进入您的终端并使用以下命令登录到您的Heroku帐户,然后按Enter键,您将看到一条包含您的帐户名的成功登录消息。
现在使用以下命令为您的应用创建数据库,
现在,创建数据库后,使用以下命令获取数据库的URL,
请参阅this和此以获取更多信息。