Как добавить новый диалект в Alembi c помимо встроенных диалектов? - PullRequest
1 голос
/ 24 января 2020

Alembi c поддержка только 5 встроенных диалектов: https://github.com/sqlalchemy/alembic/tree/master/alembic/ddl

Теперь я хочу управлять схемой в Apache Улей через alembi c и заметил, что PyHive поддерживает интерфейсы SQLAlchemy, поэтому технически Alembi c может поддерживать улей как новый диалект. Итак, я нашел этот пост Интеграция PyHive и Alembi c но он кажется нуждается во взломе alembic/ddl/impl.py в пакете alembic.

Есть ли работающий способ сделать это? Я не против того, чтобы добавлять PR в alembi c или pyHive, но мне нужно руководство.

1 Ответ

0 голосов
/ 24 февраля 2020

Я использовал эту ветку в исходном списке адресов электронной почты, чтобы получить достаточно информации:

Означает ли это, что он должен вводить зависимость от alembi c (поскольку он использует alembic.ddl.impl.DefaultImpl) в пакете (.eg, pyHive), который поддерживает интерфейсы sqlalchemy?

ну, вы должны поместить его в блок try / исключение ImportError, чтобы, если alembi c не установлен, он тихо проходит.

Есть ли какое-либо руководство, чтобы поддержать это на уровне alembi c подключаемым способом? Например, объявив класс HiveImpl в env.py проекта, использующего alembi c?

, вы можете добавить его в свой env.py, но если вы человек, работающий на диалекте, вы можете это встроено, см. пример в sqlalchemy-redshift: https://github.com/sqlalchemy-redshift/sqlalchemy-redshift/blob/master/sqlalchemy_redshift/dialect.py#L27

...