python - 加载我的数据库页面(Flask/Heroku)时如何修复内部服务器错误?
问题描述
我有一个非常基本的 Heroku 网络应用程序,您可以在其中单击链接(在主页上)以重定向到其他页面。我这样做是为了测试数据库页面。除了单击查看数据库页面时,所有页面都可以正常工作。当我尝试时,我收到一条错误消息:
内部服务器错误
服务器遇到内部错误,无法完成您的请求。
服务器过载或应用程序出错。
我确实尝试过使用 procfile,但最终没有任何效果。我当前的 proctfile 如下所示:
web: gunicorn flask-sqlalchemy-test-02.wsgi:application --log-file=-
老实说,我不太确定是 procfile 还是 sytaxapp.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', '')
推荐阅读
- python - 如何仅更新 drf 中的字段
- html - 为什么 CSS 指令不能识别标头类?
- delphi - 创建对象实例触发 AV
- r - 为什么 R 可以处理大数据集但优化求解器不能?
- wordpress - WordPress 默认的 docker 镜像如何将文件复制到主机系统中?
- r - 基于相邻列的最大值的值
- c# - 从组合框项创建变量
- python - 如何在 PCF 上托管的 python CGI 文件中刷新 STDOUT?
- functional-programming - Ramda 'when' 没有产生预期的结果
- azure - Microsoft.Azure.Cosmos.Table - 如果使用 insertOrMergeOperation 插入或合并项目操作状态,我如何检索它?