You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python脚本或程序中运行DBT模型?

从Python脚本触发DBT运行的两种实现方式

方法一:Python调用DBT CLI(推荐,稳定易维护)

这是最常用的方案,无需额外依赖特殊库,只要你已经安装了DBT即可。利用Python的subprocess模块直接执行DBT命令:

import subprocess
import os

# 切换到DBT项目根目录(如果脚本不在项目根目录)
os.chdir("/path/to/your/dbt/project")

# 执行dbt run命令,可根据需求调整参数
run_result = subprocess.run(
    ["dbt", "run"],
    capture_output=True,
    text=True
)

# 打印运行结果
print("标准输出:\n", run_result.stdout)
print("错误输出:\n", run_result.stderr)
print("返回码:", run_result.returncode)

常用参数示例:

  • 运行指定模型:["dbt", "run", "--models", "your_target_model"]
  • 指定生产环境:["dbt", "run", "--target", "production"]
  • 自定义配置文件路径:["dbt", "run", "--profiles-dir", "/path/to/your/profiles"]

方法二:使用DBT Python API(库集成方式)

DBT Core本身提供了Python API,可以直接在脚本中调用,无需通过CLI。这种方式能直接获取结构化的运行结果,适合深度集成场景:

第一步:安装依赖

pip install dbt-core dbt-postgres  # 根据你的数据库替换适配器,比如dbt-bigquery

第二步:脚本示例

from dbt.cli.main import dbtRunner, dbtRunnerResult

# 初始化DBT运行器
runner = dbtRunner()

# 定义DBT命令参数(与CLI参数完全一致)
cli_args = ["run", "--models", "your_target_model"]

# 执行命令
result: dbtRunnerResult = runner.invoke(cli_args)

# 处理结果
if result.success:
    print("DBT运行成功")
    for artifact in result.result:
        print(f"模型 {artifact.node.name} 状态: {artifact.status}")
else:
    print("DBT运行失败")
    print("错误详情:", result.exception)

注意事项

  • 确保脚本运行环境能访问到DBT的profiles.yml,可通过设置环境变量DBT_PROFILES_DIR指定配置文件路径
  • API参数与CLI完全兼容,可参考DBT官方文档调整参数

内容的提问来源于stack exchange,提问作者Brian Postow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:15:29