Airflow 气流无法从initdb上的自定义数据模型创建表

Airflow 气流无法从initdb上的自定义数据模型创建表,airflow,Airflow,我正在开发一个自定义气流插件,它应该显示元数据数据库中的(自定义)表 类活动模型(基本、日志混合): __tablename=“活动” id=列(整数,主键=True) 活动名称=列(字符串(ID\u LEN),唯一性=真) 类活动视图(模型视图): 页面大小=50 v=活动视图(活动模型,settings.Session(),name=“活动”) 类活动编辑器插件(AirflowPlugin): name=“活动插件” ... 管理视图=[v] ... 气流正确启动并加载插件。但它不会在气流

我正在开发一个自定义气流插件,它应该显示元数据数据库中的(自定义)表

类活动模型(基本、日志混合):
__tablename=“活动”
id=列(整数,主键=True)
活动名称=列(字符串(ID\u LEN),唯一性=真)
类活动视图(模型视图):
页面大小=50
v=活动视图(活动模型,settings.Session(),name=“活动”)
类活动编辑器插件(AirflowPlugin):
name=“活动插件”
...
管理视图=[v]
...
气流正确启动并加载插件。但它不会在
气流初始数据库
气流重置数据库
上的
活动模型
中创建/注册我的新表


如何正确注册该表,以便SQLAlchemy在initdb上创建它?

尽管不是通过
initdb
resetdb
添加
activitymodel.\uuuu table\uuuuu.create(settings.engine,checkfirst=True)
定义类后,如果模块不存在,则会在加载模块时创建该表。

您可以使用a)Alembic迁移或b)SQLAlchemy ORM将表添加到Airflow db中

a) 使用Alembic进行迁移

将代码添加到报表中

#1。创建迁移文件
cd气流方向/气流/
alembic修订版-m“创建新表格”
# 2. 向生成的迁移Python文件中添加升级和降级说明。
##气流方向/气流/迁移/版本/0a2a5b66e19d添加新的表格.py
将sqlalchemy作为sa导入
从alembic导入op
#Alembic使用的修订标识符。
修订版='XXXXXXXX'
向下修订='xxxxxxxxx'
分支标签=无
依赖=无
def升级():
op.create_table(“新建_table”),
sa.Column('task_id',sa.String(长度=250,**排序规则参数),null=False),
sa.Column('dag_id',sa.String(长度=250,**排序规则参数),null=False)
def降级():
op.drop_表(“新_表”)
#3.运行迁移
alembic升级头
b) 炼金术

可以在与Airflow repo分离的实例目录上的Airflow插件中使用

来自气流导入设置的

从sqlalchemy导入列、索引、字符串
从afflow.utils.log.logging\u mixin导入LoggingMixin
从afflow.utils.session导入创建会话
类NewModel(基本,LoggingMixin):
__tablename=“新建表格”
id=列(字符串(id\u LEN),主键=True)
name=Column(字符串(ID_LEN),unique=True)
#在数据库中创建新表
新建模型。\表\创建(settings.engine,checkfirst=True)
#创建对象
new_object=NewModel(id='1',name='my name')
#写入数据库
使用create_session()作为会话:
session.add(新对象)
session.commit()

这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-澄清了我的答案