【问题标题】:How to init db in Peewee?如何在 Peewee 中初始化数据库?
【发布时间】:2017-07-21 09:24:47
【问题描述】:

我是 Flask 堆栈的新手。我需要运行一些项目。我创建了 virtualenv 并安装了所有要求

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 myproject import create_app
app = create_app()

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

现在我想从 models.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 shell?

【问题讨论】:

  • Anubhav Agarwal,peewee_migrate 未在要求中列出。我需要在这个堆栈中完成。
  • ОК,我明白了。在 shell 中,我从 models.py 导入了 init_db() 并运行它。无需迁移。

标签: python flask peewee flask-peewee


【解决方案1】:
db.create_tables([Table1, Table2, Table3])

文档:http://docs.peewee-orm.com/en/latest/peewee/models.html#creating-model-tables

【讨论】:

    猜你喜欢
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2019-06-26
    • 2015-12-17
    • 1970-01-01
    • 2019-10-12
    相关资源
    最近更新 更多