2017-03-17 3 views
0

대신 플라스크 -peewee 나는 일반 peewee 패키지를 사용하고 있습니다. 나는 테이블을 만들려면이 전화를해야한다고 알고플라스크 + 피 에이 : 테이블을 만들 장소는 어디입니까?

import os 

# just extending the BaseFlask with yaml config reader 
from . extensions.flask_app import Flask 

# peewee's wrapper around the database 
from playhouse.flask_utils import FlaskDB 


db_wrapper = FlaskDB() 


# define the application factory 
def create_app(env): 

    app = Flask(__name__) 

    # load config depending on the environment 
    app.config.from_yaml(os.path.join(app.root_path, 'config.yml'), env) 

    # init extensions 
    db_wrapper.init_app(app) 

    # ... 

: 여기

내가 데이터베이스 초기화 해요 방법 나는 테이블 작성 코드를 삽입 할

from . models import User 

db_wrapper.database.connect() 
db_wrapper.database.create_tables([User]) 

하지만를 , 그래서 데이터베이스는 이미 초기화 된 것입니까?

# in app/__init__.py 

# define the application factory 
def create_app(env): 

    app = Flask(__name__) 

    # load config depending on the environment 
    app.config.from_yaml(os.path.join(app.root_path, 'config.yml'), env) 

    # init extensions 
    db_wrapper.init_app(app) 

    create_tables(); 

    # rest of the initialization 

def create_tables(): 

    from . models import User  
    User.create_table(fail_silently=True) 

가 여기에 그것을 할 괜찮은 :

편집

docs 보면서 나는 그런 User.create_table(fail_silently=True)을 사용할 수 있다는 것을 발견? 아니면 거기에 더 좋은 방법/도구가 있습니까?

편집을 알아 냈다. 제발, 내 대답을 참조하십시오.

답변

0

업데이트

내가 에 내장 된 CLI 지원 플라스크에 대해 알고하지 않았다. 상자 밖에서 물건을 할 수 있기 때문에 그런 접근법을 고려해야할지 모르겠습니다 (documntation 참조).


나는 플라스크 스크립트 패키지를 이용할 수있다. 나는 그것을 전에 간과했다, 단지 그것을 간과했다.

그런 다음이 줄을 추가, 루트 디렉토리에 manage.py 파일을 생성

설치 플라스크 스크립트 :

가상 환경실행 활성화 :

import os 
from app import create_app, db_wrapper 
from app.models import * 
from flask_script import Manager, Shell 

# create the application instance  
app = create_app(os.getenv('FLASK_ENV', 'development')) 

# instantiate script manager 
manager = Manager(app) 

def make_shell_context(): 
    return dict(app=app, db_wrapper=db_wrapper, User=User) 


@manager.command 
def run_shell(): 
    Shell(make_context = make_shell_context).run(no_ipython=True, no_bpython=True) 


# here's my simple command 
@manager.command 
def create_tables(): 
    User.create_table(fail_silently=True) 


@manager.command 
def run_tests(): 
    import unittest 
    tests = unittest.TestLoader().discover('tests') 
    unittest.TextTestRunner(verbosity=2).run(tests) 


# run it 
if __name__ == '__main__': 
    manager.run() 
+0

플라스크 스크립트를 사용하는 이유는 무엇입니까? 플라스크는 1 년 넘게 내장 된 CLI를 제공합니다. 단지'@ app.cli.command'로 커스텀 커맨드를 추가하십시오. – davidism

+0

@davidism 나는 이것을 몰랐다. 나를 가리켜 주셔서 감사합니다. 나는 이것을 조사 할 것이다. – lexeme

+0

테이블을 만든 후에 연결을 정리해야합니다! – coleifer