def rollback(name): """ Rolls back migration """ migrator = Router(db, logger=LOGGER) migrator.migrate_dir = os.path.join(base_dir, 'application', 'migrations') migrator.rollback(name)
def makemigrations(name='auto'): """ Makes migrations """ migrator = Router(db, logger=LOGGER) migrator.migrate_dir = os.path.join(base_dir, 'application', 'migrations') migrator.create(name=name, auto='project.application.models')
def migrate(name=None): """ Runs migrations """ migrator = Router(db, logger=LOGGER) migrator.migrate_dir = os.path.join(base_dir, 'application', 'migrations') migrator.run(name=name)
def async_db(request): """ Фикстура для асинхронного взаимодействия с базой PostgreSQL через PeeWee ORM """ # Создание базы process = Popen(['createdb', TEST_DB]) process.communicate() db.allow_sync = True # Миграции migrator = Router(db) migrator.migrate_dir = os.path.join(base_dir, 'application', 'migrations') migrator.run() db.allow_sync = False def teardown(): terminate_sql = ("SELECT pg_terminate_backend(pg_stat_activity.pid) " "FROM pg_stat_activity " "WHERE pg_stat_activity.datname = '%s' " "AND pid <> pg_backend_pid();" % TEST_DB) process = Popen(['psql', '-c', terminate_sql]) process.communicate() process = Popen(['dropdb', TEST_DB]) process.communicate() request.addfinalizer(teardown) return db