繁体   English   中英

加载数据库页面(Flask / Heroku)时如何解决内部服务器错误?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM