2017-03-01 13 views
-1

私はフラスコのスタックで新しいです。私はいくつかのプロジェクトを実行する必要があります。私はvirtualenvのを作成し、インストールされているすべての要件Peeweeでinit dbを使う方法は?

from myproject import create_app 
app = create_app() 

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

は、今私はmodels.pyからDBを初期化したい:

Flask==0.10.1 
Flask-Login==0.3.1 
Flask-Testing==0.4.2 
Flask-WTF==0.12 
Jinja2==2.8 
MarkupSafe==0.23 
WTForms==2.0.2 
Werkzeug==0.10.4 
argparse==1.2.1 
flask-peewee==0.6.6 
funcsigs==0.4 
itsdangerous==0.24 
mock==1.3.0 
nose==1.3.7 
pbr==1.8.0 
peewee==2.6.4 
psycopg2==2.6.1 
requests==2.7.0 
six==1.9.0 
wsgiref==0.1.2 
wtf-peewee==0.2.3 

をまた、私はプロジェクトを開始runserver.pyスクリプトを持っています:

from peewee import Model, CharField, IntegerField, DateTimeField, DecimalField, TextField, datetime as peewee_datetime 
from playhouse.pool import PooledPostgresqlExtDatabase 

from .config import BaseConfig 


db = PooledPostgresqlExtDatabase(**BaseConfig.DATABASE) 
db.commit_select = True 
db.autorollback = True 


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

    def save(self, **kwds): 
     with db.transaction(): 
      Model.save(self, **kwds) 


class Payment(BaseModel): 
    class Meta: 
     db_table = "payments" 

    card_number = CharField() 
    amount = DecimalField() 
    .... 


def init_db(): 
    try: 
     db.connect() 
     map(lambda l: db.drop_table(l, True), (Payment,)) 
     print "tables dropped" 
     map(lambda l: db.create_table(l, True), (Payment,)) 
     print "tables created" 
    except: 
     db.rollback() 
     raise 

テーブルの作成方法? PeeweeはDjangoコマンド "python manage.py migrate"のようなものを持っていますか? そして、Djangoで "python manage.py shell"のようなプロジェクトの中でpythonシェルを実行するには?

+0

使用https://github.com/klen/peewee_migrate –

+0

** Anubhav Agarwalさん**、peewee_migrate要件に記載されていません。私はこのスタックでそれを行う必要があります。 – maximkalga

+0

ОК、私はそれを得た。シェルの中で、models.pyからinit_db()をインポートして実行しました。移行は必要ありません。 – maximkalga

答えて

関連する問題