[英]How to fix internal server error when loading my database page (Flask/Heroku)?
我有一个非常基本的Heroku网络应用程序,您可以在其中单击链接(在主页上)以将其重定向到其他页面。 我这样做是为了测试数据库页面。 所有页面均与单击查看数据库页面时不同。 当我尝试时收到错误消息:
内部服务器错误
服务器遇到内部错误,无法完成您的请求。
服务器超载或应用程序中有错误。
我确实尝试过使用procfile,但最后nothig起作用了。 我当前的proctfile看起来像这样:
web: gunicorn flask-sqlalchemy-test-02.wsgi:application --log-file=-
老实说,我不太确定它是procfile还是app.py中的app.py
导致了我的问题。
我的app.py文件:
import os
import psycopg2
from flask import Flask, render_template, g, url_for
app = Flask(__name__)
DATABASE_URL = os.environ.get('postgres://fikwczdiymxhwf:73bf42c2c8a15fa59b77e93654b6383e1cf4f85bdf0156818d1cf39a77815f13@ec2-54-243-47-196.compute-1.amazonaws.com:5432/d3uburco4fea1b'
@app.route('/')
def index():
return render_template("index.html")
@app.route('/page2')
def page_2():
return render_template("random_page_2.html")
@app.route('/hello')
def hello():
return render_template("hello.html")
@app.route('/view_database')
def view_db():
conn = psycopg2.connect(DATABASE_URL)
db = conn.cursor()
data = db.execute("SELECT * FROM example").fetchall()
db.close()
conn.close()
return render_template('view_database.html', data=data)
我希望以无序列表的形式查看数据库,但收到一条错误消息:
内部服务器错误
服务器遇到内部错误,无法完成您的请求。
服务器超载或应用程序中有错误。
您使用os.environ.get()的方式是错误的。
os.environ.get()用于获取操作系统导出的环境变量,因此DATABASE_URL
返回None,您无法连接到None
URL,因此发生内部服务器错误。
**正确的方法:**首先,如果使用Linux,则导出环境变量:
export DATABASE_URL=postgres://fikwczdiymxhwf:73bf42c2c8a15fa59b77e93654b6383e1cf4f85bdf0156818d1cf39a77815f13@ec2-54-243-47-196.compute-1.amazonaws.com:5432/d3uburco4fea1b
然后,在您的代码中,将该行替换为:
DATABASE_URL = os.environ.get('DATABASE_URL', '')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.