2016-09-30 37 views
0

我試着用燒瓶兩天peewee,但我失敗了,直到現在。該代碼是爲如下:'FlaskDB'對象沒有任何屬性'序列'

import click 
from flask import Flask 
from flask.cli import FlaskGroup 

from playhouse.flask_utils import FlaskDB 

from models import * 
from config import config 

flask_db = FlaskDB() 


def create_app(config_name): 
    application = Flask(__name__) 
    application.config.from_object(config[config_name]) 
    flask_db.init_app(application) 

    flask_db.connect_db() 
    flask_db.database.create_tables([User]) 
    flask_db.database.close() 

    @application.route('/') 
    def index(): 
     return "hello world!" 

    return application 


def create_cli_app(info): 
    return create_app("develop") 


@click.group(cls=FlaskGroup, create_app=create_cli_app) 
def cli(): 
    pass 


@cli.command() 
def initdb(): 
    flask_db.connect_db() 
    flask_db.database.create_tables([User]) 
    flask_db.database.close() 


if __name__ == "__main__": 
    cli() 

當我與CLI運行:蟒蛇manage.py運行,我得到了以下錯誤:

(venv) ➜ /Users/yw/Documents/web git:(master) ✗ p manage.py run Traceback (most recent call last): File "manage.py", line 46, in cli() File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/core.py", line 716, in call return self.main(*args, **kwargs) File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/flask/cli.py", line 345, in main return AppGroup.main(self, *args, **kwargs) File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/core.py", line 696, in main rv = self.invoke(ctx) File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/core.py", line 1060, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/core.py", line 889, in invoke return ctx.invoke(self.callback, **ctx.params) File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/core.py", line 534, in invoke return callback(*args, **kwargs) File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/decorators.py", line 64, in new_func return ctx.invoke(f, obj, *args[1:], **kwargs) File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/core.py", line 534, in invoke return callback(*args, **kwargs) File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/flask/cli.py", line 388, in run_command app = DispatchingApp(info.load_app, use_eager_loading=eager_loading) File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/flask/cli.py", line 124, in init self._load_unlocked() File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/flask/cli.py", line 148, in _load_unlocked self._app = rv = self.loader() File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/flask/cli.py", line 201, in load_app rv = self.create_app(self) File "manage.py", line 30, in create_cli_app return create_app("develop") File "manage.py", line 19, in create_app flask_db.database.create_tables([User]) File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/peewee.py", line 3765, in create_tables create_model_tables(models, fail_silently=safe) File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/peewee.py", line 5175, in create_model_tables m.create_table(**create_table_kwargs) File "/Users/yw/Documents/web/venv/lib/python3.4/site-packages/peewee.py", line 4845, in create_table if db.sequences and pk is not False and pk.sequence: AttributeError: 'FlaskDB' object has no attribute 'sequences'

事實上,我只是想發起DB通過使用flask.cli工具。正如你所看到的,如果我使用命令「python manage.py initdb」,我只能得到與上面相同的錯誤輸出。

那麼「FlaskDB」對象的含義是什麼沒有屬性「序列」?我該怎麼辦?

感謝您的幫助!

+0

我解決了這個問題,現在,請關閉這個職位。我犯了一個低級錯誤。問題發生在另一個文件 - models.py中。在這些db表的類定義中,我應該使用flask_db.Model而不是Model作爲基類。就這樣,現在一切正常。 – urbainy

回答

0

看來您的User模型沒有正確的數據庫。

使用FlaskDB,您的User模型應繼承FlaskDB().Model 而不是定義class Meta: database = database

database = FlaskDB() 

class User(database.Model): 
    pass