2

Alembic仅支持 5 种内置方言:https ://github.com/sqlalchemy/alembic/tree/master/alembic/ddl

现在我想通过 alembic 管理 Apache Hive 中的模式,并注意到PyHive支持 SQLAlchemy 接口,因此从技术上讲,Alembic 可以支持 hive 作为一种新的方言。所以我发现这篇文章Integrate PyHive and Alembic但它似乎需要alembic/ddl/impl.py在 package中进行黑客攻击alembic

有什么可行的方法来做到这一点吗?我不介意向 alembic 或 pyHive 贡献 PR,但需要指导。

4

1 回答 1

0

我在原始电子邮件列表中使用了这个线程来获取足够的信息:

这是否意味着它必须alembic.ddl.impl.DefaultImpl在支持 sqlalchemy 接口的包(例如 pyHive)中引入对 alembic 的依赖(因为它使用)?

好吧,你必须把它放在一个 try/except ImportError 块中,这样如果没有安装 alembic,它就会默默地通过。

是否有任何指导以可插入的方式在 alembic 级别上支持这一点?例如,在项目中声明一个 HiveImpl 类env.py使用 alembic?

你也可以在你的 env.py 中放一个,但如果你是使用方言的人,你可以内置它,请参阅 sqlalchemy-redshift 中的示例:https ://github.com/sqlalchemy-redshift/sqlalchemy-redshift /blob/master/sqlalchemy_redshift/dialect.py#L27

于 2020-02-24T20:54:27.830 回答