2017-04-19 24 views
1

私のアプリケーションは素晴らしいですが、peeweeとpostgresでデータベースを試しましたが、テーブルを作成できませんでした。heroku上のPeeweeとpostgres、テーブルを作成できません

my app

あなたが助けてくださいHerokuの上ピーウィーを使用している場合、私は、オンラインで公開が、そのが動作していない誰にもさまざまな方法を試してみました。

マイmodel.py

if os.environ.get('DATABASE_URL'): 
    DATABASE_URL = os.environ.get('DATABASE_URL') 
    db = urlparse(DATABASE_URL) 
    user = db.username 
    password = db.password 
    path = db.path[1:] 
    host = db.hostname 
    port = db.port 
    database = PostgresqlDatabase(path, user=user, password=password, host=host, port=port) 
else: 
    database = PostgresqlDatabase('heroku') 


class BaseModel(Model): 
    class Meta: 
     database = database 


class User(BaseModel): 
    name = CharField() 
    email = CharField(null=False, unique=True) 

関数テーブルを歓迎する声明を作成した場合のテーブルを作成し移動した後。

@app.route('/') 
def welcome(): 
    call('printenv') 
    a = 'Default' 
    b = 'Default' 
    if os.environ.get('DATABASE_URL'): 
     a = os.environ.get('DATABASE_URL') 
    if os.environ.get('HEROKU'): 
     b = os.environ.get('HEROKU') 
    create_model_tables([Users], fail_silently=True) 
    Users.insert(name='John', email='Doe').execute() 
    return render_template('index.html', a=a, b=b) 


if __name__ == '__main__': 
    app.run(port=5000, debug=True) 

答えて

1

「ユーザ」は予約済みのテーブルです - 試してみてください。

class User(Model): 
    ... 
    class Meta: 
     db_table = 'users' 
+0

を実行しないapp.pyからアプリを実行して、私はまだ同じエラーを取得し、テーブル名を変更しました。 –

+0

LINE 1:INSERT INTO「ユーザー」(「名前」、「メール」)VALUES( 'John'、 'Doe')... 2017-04-20T03:36:57.055897 + 00:00 app [web.1 ]: 2017-04-20T03:36:57.055896 + 00:00 app [web.1]:psycopg2.ProgrammingError:relation "users"は存在しません –

+0

明らかにテーブルを作成する必要があります。 – coleifer

0
from playhouse.db_url import connect 
import settings 

local_url = 'postgresql://{}:{}@localhost:5432/{}'.format(settings.DB_USER, settings.DB_PASS, settings.DB_NAME) 

database = connect(os.environ.get('DATABASE_URL') or local_url) 


class BaseModel(Model): 
    class Meta: 
     database = database 

、この方法を使用して簡単に、それは間違って得ることの非常に少ない可能性があります。

テーブルの作成は、if __name__ == '__main__:の前に行う必要があります。これは、ヒロクでは、その下にあるものはすべて機能しないためです。

[uwsgi] 
http-socket = :$(PORT) 
master = true 
die-on-term = true 
module = app:app 
memory-report = true 

module = app:app

uswgi.ini私のような手段app.py

関連する問題