Databricks SQLAlchemy TBLPROPERTIES

问题描述 投票:0回答:1

因此,我们使用 SQLAlchemy 创建了一个模型,并且希望将其部署在 DataBricks 上。我们模型中的表具有列的默认值。我们如何使用 SQLAlchemy 并使用 TBLPROPERTIES 表子句来部署表?

sqlalchemy databricks
1个回答
0
投票

通用 TBL 属性

创建模型后,您可以立即侦听此事件并使用

@event.listens_for()
装饰器对创建的表执行修改:

@event.listens_for(schema.Table, "after_create")
def set_tbl_properties(target, connection, **kw):
    if connection.engine.dialect.name == "databricks":
        connection.execute(
            DDL(f"""
            ALTER TABLE {target.fullname} SET TBLPROPERTIES (
            <your generic TBLPROPERTIES>
            )""")
        )

自定义 TBL 属性

如果您想要依赖于表的 TBLPROPERTIES,您可以通过添加自定义属性来修改模型。这样,当您编译表创建时,您将能够添加 TBLPROPERTIES:

@compiles(schema.CreateTable, "databricks")
def compile_create_table(element, compiler, **kw):
    stmt = compiler.visit_create_table(element, **kw)
    databricks_opts = element.element.dialect_options["databricks"]
    tblproperties = databricks_opts.get("tblproperties")
    if location:
        stmt = stmt.rstrip()
        stmt = f"{stmt} \nTBLPROPERTIES '{tblproperties}'"
    return stmt

我希望这能回答您的问题,并且您将能够使用 TBLPROPERTIES 创建表格。

© www.soinside.com 2019 - 2024. All rights reserved.