Python 如何在Heroku(由Peewee和Postgres组成的应用程序)上上传一个简单的网站?
我有一个Python 如何在Heroku(由Peewee和Postgres组成的应用程序)上上传一个简单的网站?,python,postgresql,heroku,peewee,heroku-postgres,Python,Postgresql,Heroku,Peewee,Heroku Postgres,我有一个app.py文件。我正试图上传到HEROKU上。我看到在Heroku上上传时需要做一些更改,比如添加Procfile和Requirements.txt。我还添加了这两个。它在本地运行得很好,但在Heroku数据库上并没有创建或连接 我在终端上正在做什么 heroku创建 git推送heroku主机 heroku插件:添加heroku postgresql heroku配置:设置heroku=1 heroku ps:scale web=1 heroku open 现在,我的用户注册网页正在
app.py
文件。我正试图上传到HEROKU上。我看到在Heroku上上传时需要做一些更改,比如添加Procfile
和Requirements.txt
。我还添加了这两个。它在本地运行得很好,但在Heroku数据库上并没有创建或连接
我在终端上正在做什么
heroku创建
git推送heroku主机
heroku插件:添加heroku postgresql
heroku配置:设置heroku=1
heroku ps:scale web=1
heroku open
import os
import urlparse
import psycopg2
from peewee import Model, CharField, SqliteDatabase, CharField, ForeignKeyField, IntegrityError
from peewee import create_model_tables
from flask import Flask, request, render_template, redirect, url_for, session
from passlib.hash import sha256_crypt
from flask_bootstrap import Bootstrap
from flask_peewee.db import Database
if 'HEROKU' in os.environ:
DEBUG = False
urlparse.uses_netloc.append('postgres')
url = urlparse.urlparse(os.environ['DATABASE_URL'])
DATABASE = {
'engine': 'peewee.PostgresqlDatabase',
'name': url.path[1:],
'user': url.username,
'password': url.password,
'host': url.hostname,
'port': url.port,
}
else:
DEBUG = True
DATABASE = {
'engine': 'peewee.PostgresqlDatabase',
'name': 'notes',
'user': 'scrolldev',
'password': 'scrolldev',
'host': 'localhost',
'port': 5432,
'threadlocals': True
}
app = Flask(__name__)
bootstrap = Bootstrap(app)
app.config.from_object(__name__)
db = Database(app)
class User(db.Model):
....
class Notepad(db.Model):
....
def setup_db():
create_model_tables([User, Notepad], fail_silently=True)
....
....
....
if __name__ == '__main__':
setup_db()
app.secret_key = 'super_secret_key'
app.run(debug=True)
在提出这个问题之前,我还从这里获得了帮助,然后更新了我的文件
更新
它在本地运行正常,但在heroku上运行不正常。请帮助我。如果
os.environment
中包含'HEROKU'
,您的代码将从数据库的url
环境变量加载url
如果操作系统环境中的“HEROKU”:
调试=错误
urlparse.uses_netloc.append('postgres')
url=urlparse.urlparse(os.environ[“DATABASE_url”])
…但它也会在前面几行的条件外加载它:
来自peewee导入模型,PostgresqlDatabase
urlparse.uses_netloc.append('postgres')
url=urlparse.urlparse(os.environ['DATABASE\u url'])#@coleifer您能研究一下吗错误消息清楚地说明了问题:您的os.environ
没有'DATABASE\u url'
键。您设置了这个环境变量吗?我正在使用os.environ中的if Heroku
。这意味着在本地它不应该产生任何问题,谢谢你告诉我的错误。但我的问题有点不同。我不知道在数据库中传递什么。@Rahushrivastava,这是一个完全不同的问题。我回答了你原来的问题。请不要编辑您的问题以完全改变其含义。如果这解决了您原来的问题,请在提交新问题的同时提交新问题。