' FlaskDB'对象没有属性'序列'

时间:2016-09-30 23:27:21

标签: flask peewee

我用烧瓶试了两天peewee,但直到现在我都失败了。代码如下:

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:python manage.py运行它时,我收到以下错误:

  

(venv)➜/ Users / yw / Documents / web git :( master)✗pmanage.py run   回溯(最近一次呼叫最后):文件" manage.py",第46行,in          cli()File" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/core.py",   第716行,通话       return self.main(* args,** kwargs)File" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/flask/cli.py",   第345行,主要       返回AppGroup.main(self,* args,** kwargs)File" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/core.py",   第696行,主要       rv = self.invoke(ctx)File" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/core.py",   第1060行,在调用中       return _process_result(sub_ctx.command.invoke(sub_ctx))File" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/core.py",   第889行,在调用中       return ctx.invoke(self.callback,** ctx.params)File" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/core.py",   第534行,在调用中       返回回调(* args,** kwargs)文件" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/decorators.py",   第64行,在new_func中       return ctx.invoke(f,obj,* args [1:],** kwargs)File" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/click/core。 PY&#34 ;,   第534行,在调用中       返回回调(* args,** kwargs)文件" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/flask/cli.py",   第388行,在run_command中       app = DispatchingApp(info.load_app,use_eager_loading = eager_loading)文件   " /Users/yw/Documents/web/venv/lib/python3.4/site-packages/flask/cli.py" ;,   第124行,在 init 中       self._load_unlocked()File" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/flask/cli.py",   第148行,在_load_unlocked中       self._app = rv = self.loader()File" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/flask/cli.py",   第201行,在load_app中       rv = self.create_app(self)文件" manage.py",第30行,在create_cli_app中       在create_app中返回create_app(" develop")文件" manage.py",第19行       flask_db.database.create_tables([User])File" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/peewee.py",   第3765行,在create_tables中       create_model_tables(models,fail_silently = safe)File" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/peewee.py",   第5175行,在create_model_tables中       m.create_table(** create_table_kwargs)File" /Users/yw/Documents/web/venv/lib/python3.4/site-packages/peewee.py",   第4845行,在create_table中       如果db.sequences和pk不是False并且pk.sequence:AttributeError:' FlaskDB'对象没有属性'序列'

实际上,我只想使用flask.cli工具启动数据库。如您所见,如果我使用命令“python manage.py initdb”,我只能得到与上面相同的错误输出。

那么"' FlaskDB'是什么意思?对象没有属性'序列'"?我该怎么办?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您的User模型似乎没有正确的数据库。

使用FlaskDB,您的User模型应该继承FlaskDB().Model 而不是定义class Meta: database = database

database = FlaskDB()

class User(database.Model):
    pass