Есть ли способ заблокировать миграцию flask от доступа к некоторым схемам? - PullRequest
0 голосов
/ 10 апреля 2020

Итак, у меня есть 2 схемы, которые Admin и Ruby, и чтобы миграции работали, я должен использовать параметр include_schemas=True, но у меня есть другие схемы, созданные системой Google Cloud SQL, которые не могут быть изменилось, но команда flask DB upgrade пытается отбросить таблицы оттуда, поэтому у меня вопрос, есть ли способ для меня включить две схемы Ruby and Admin или исключить управляемые системой.

Моя конфигурация для flask migrate:

migrate = Migrate(app, db, include_schemas=True, version_table_schema='Admin')

Ошибка:

sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1227, 'Access denied; you need (at least one of) the SUPER privilege(s) for this operation')
[SQL: 
DROP TABLE performance_schema.replication_applier_status_by_worker]
(Background on this error at: http://sqlalche.me/e/2j85)

Пожалуйста, не комментируйте, говоря, чтобы я дал SUPER privilege приложению, так как я не хочу, чтобы оно delete выполняет системные управляемые схемы.

1 Ответ

0 голосов
/ 11 апреля 2020

Я исправил это, создав новую функцию в migrations/env.py:

Код:

def include_object(object, name, type_, reflected, compare_to):
    if type_ == 'table' and object.schema != 'Ruby' or object.schema != 'Admin':
        return False

     return True

и добавив этот параметр в context.configure:

include_object=include_object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...