首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取flask-migrate来创建数据库?

如何获取flask-migrate来创建数据库?
EN

Stack Overflow用户
提问于 2020-10-29 13:59:11
回答 1查看 404关注 0票数 0

换句话说,如何生成用于创建数据库的迁移,或者这是一种反模式?

我在跑步

代码语言:javascript
复制
python manage.py db migrate -m "init"

获取

代码语言:javascript
复制
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL:  database "auth" does not exist

manage.py

代码语言:javascript
复制
# manage.py


import os
import unittest
import coverage

from flask_script import Manager

from authentek.app import create_app as initialize_app
from authentek.logger import log

from authentek.extensions import db, migrate
from authentek.database.models import User, BlacklistToken  # noqa
from flask_migrate import MigrateCommand
app = initialize_app(False, True)
manager = Manager(app)
migrate.init_app(app)
manager.add_command('db', MigrateCommand)

print(app.extensions)

COV = coverage.coverage(
    branch=True,
    include='authentek/*',
    omit=[
        'authentek/tests/*',
    ]
)
COV.start()

@manager.command
def test():
    """Runs the unit tests without test coverage."""
    tests = unittest.TestLoader().discover('authentek/tests', pattern='test*.py')
    result = unittest.TextTestRunner(verbosity=2).run(tests)
    if result.wasSuccessful():
        return 0
    return 1


@manager.command
def cov():
    """Runs the unit tests with coverage."""
    tests = unittest.TestLoader().discover('authentek/tests')
    result = unittest.TextTestRunner(verbosity=2).run(tests)
    if result.wasSuccessful():
        COV.stop()
        COV.save()
        print('Coverage Summary:')
        COV.report()
        basedir = os.path.abspath(os.path.dirname(__file__))
        covdir = os.path.join(basedir, 'tmp/coverage')
        COV.html_report(directory=covdir)
        print('HTML version: file://%s/index.html' % covdir)
        COV.erase()
        return 0
    return 1



@manager.command
def drop_db():
    """Drops the db tables."""
    db.drop_all()


if __name__ == '__main__':
    manager.run()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-30 07:24:05

出于安全目的,您不希望赋予应用程序创建或销毁数据库的权力,您所希望的只是应用程序可以对单个数据库具有读写访问权限。

因此,您通常必须手动创建数据库,或者通过具有数据库管理权限的单独脚本创建数据库。

在单元测试的情况下,我认为配置数据库管理员凭据是没有风险的,只要您有单独的数据库服务器用于测试,那么就不会有影响测试环境之外的其他数据库的风险。在这种情况下,您可以添加使用SQL创建和销毁数据库的函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64585755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档