{"id":626,"library":"dbt-adapters","title":"dbt-adapters","description":"dbt-adapters is a Python library that defines the set of adapter protocols and base functionality crucial for integrating dbt-core with various data platforms. It serves as the foundational interface for developing database-specific dbt adapters. As of its current version 1.22.9, it's an actively developed component within the dbt ecosystem, with a release cadence that is increasingly independent of dbt-core, especially since dbt-core v1.8.","status":"active","version":"1.22.9","language":"python","source_language":"en","source_url":"https://github.com/dbt-labs/dbt-adapters.git#subdirectory=dbt-adapters","tags":["dbt","data transformation","database adapters","etl","data engineering"],"install":[{"cmd":"pip install dbt-adapters","lang":"bash","label":"Install dbt-adapters (for adapter developers)"},{"cmd":"pip install dbt-core dbt-<your-database-adapter>","lang":"bash","label":"Recommended: Install dbt-core and a specific adapter (for dbt users)"}],"dependencies":[{"reason":"Provides shared code utilized by both dbt-adapters and dbt-core for consistent functionality.","package":"dbt-common"},{"reason":"dbt-adapters defines the interface for dbt-core to interact with databases. While decoupled, a dbt environment requires both dbt-core and a specific adapter which builds on dbt-adapters.","package":"dbt-core"}],"imports":[{"note":"For developers extending the base adapter functionality. End-users typically do not directly import from dbt-adapters Python modules.","symbol":"BaseAdapter","correct":"from dbt.adapters.base.impl import BaseAdapter"},{"note":"For developers building SQL-based adapters, inheriting from BaseAdapter. End-users typically do not directly import from dbt-adapters Python modules.","symbol":"SQLAdapter","correct":"from dbt.adapters.sql.impl import SQLAdapter"},{"note":"The primary way dbt users interact with adapter functionality within dbt models (via Jinja macros).","symbol":"adapter (Jinja context variable)","correct":"{% do adapter.dispatch('macro_name', 'package_name')(arg1, arg2) %}"}],"quickstart":{"code":"# 1. Install dbt-core and your specific database adapter (e.g., dbt-postgres)\n# pip install dbt-core dbt-postgres\n\n# 2. Initialize a dbt project\n# dbt init my_dbt_project\n# cd my_dbt_project\n\n# 3. Configure your profiles.yml (typically in ~/.dbt/profiles.yml)\n# Example profiles.yml content (replace with your database details):\n# my_dbt_project:\n#   target: dev\n#   outputs:\n#     dev:\n#       type: postgres\n#       host: localhost\n#       user: myuser\n#       password: \"{{ env_var('DB_PASSWORD') }}\"\n#       port: 5432\n#       dbname: mydatabase\n#       schema: public\n\n# 4. Create a dbt model (e.g., models/my_model.sql)\n# Use the 'adapter' object in Jinja to call adapter-specific functionality.\n# For instance, to get the current timestamp, which might vary by database dialect:\n-- my_model.sql\nSELECT\n    {{ adapter.dispatch('current_timestamp', 'dbt')() }} as current_time,\n    1 as id","lang":"sql","description":"dbt-adapters is a low-level library for building dbt adapters. End-users interact with adapter functionality through dbt-core and specific database adapters. The quickstart below illustrates how a dbt user sets up a project and uses adapter-specific logic via Jinja macros in a SQL model, which leverages the interfaces provided by `dbt-adapters`."},"warnings":[{"fix":"Adapter maintainers: Refactor imports to use `dbt-adapters` and `dbt-common` interfaces. Users: Always explicitly install `dbt-core` and your desired `dbt-<adapter>` (e.g., `pip install dbt-core dbt-snowflake`).","message":"Breaking changes in dbt-core v1.8+ for adapter developers. dbt-core and dbt-adapters were decoupled. Adapters should no longer directly import from `dbt-core` and instead rely on interfaces defined in `dbt-adapters` and `dbt-common`. Users must explicitly install `dbt-core` and their specific `dbt-<adapter>` package.","severity":"breaking","affected_versions":"dbt-core >= 1.8.0, dbt-adapters >= 1.0.0"},{"fix":"Adapter maintainers should update method implementations to return `dbt.contracts.connection.AdapterResponse` objects or a subclass thereof.","message":"Adapter methods like `get_response` and `execute` are expected to return `connection.AdapterResponse` objects, not just strings, since `dbt-core` v1.1. Custom adapters that return strings might face unexpected behavior.","severity":"gotcha","affected_versions":"dbt-core >= 1.1.0"},{"fix":"Ensure `profiles.yml` is correctly configured with `type` matching your installed adapter (e.g., `type: postgres` for `dbt-postgres`). Verify the specific `dbt-<database-adapter>` package is installed.","message":"Correct configuration of `profiles.yml` is essential. Missing or incorrect entries, or failing to install the corresponding `dbt-<database-adapter>` package, will prevent dbt from connecting to your data warehouse and result in errors like 'Error importing adapter: No module named...'","severity":"gotcha","affected_versions":"All versions"},{"fix":"Review and update dbt project configurations and custom macros to eliminate deprecated patterns. Consult dbt-core release notes for specific guidance on addressing warnings.","message":"Starting with `dbt-core` v1.10, deprecation warnings are raised for custom inputs, duplicate YAML keys, and unexpected Jinja blocks. While initially warnings, these will become errors in future versions.","severity":"deprecated","affected_versions":"dbt-core >= 1.10.0"},{"fix":"When upgrading, ensure all dbt environments and state-dependent jobs are updated to compatible `dbt-core` versions simultaneously.","message":"Changes to dbt artifact schema versions (e.g., manifest.json) require compatible `dbt-core` versions when using state-based functionality (`--state` flag). Mismatched schema versions will cause errors and require concurrent upgrades of dbt orchestrations.","severity":"breaking","affected_versions":"dbt-core >= 1.1.0"}],"env_vars":null,"last_verified":"2026-05-12T16:55:22.533Z","next_check":"2026-06-26T00:00:00.000Z","problems":[{"fix":"Reinstall or upgrade `dbt-adapters` and your specific dbt adapter (e.g., `dbt-bigquery`) alongside `dbt-core`. A common fix is `pip install --force-reinstall dbt-adapters dbt-<your-adapter-name>` or creating a fresh virtual environment and reinstalling everything.","cause":"This error often occurs after upgrading dbt-core to version 1.8 or later without explicitly upgrading or reinstalling `dbt-adapters` or the specific database adapter, due to the decoupling of dbt-core and adapter packages.","error":"ModuleNotFoundError: No module named 'dbt.adapters.factory'"},{"fix":"Ensure all dbt-related packages (dbt-core, dbt-adapters, and your specific adapter) are compatible and updated together. Downgrading or forcing a reinstall of `dbt-adapters` to a compatible version often resolves the issue: `pip install dbt-adapters==<compatible-version>` or `pip install --upgrade dbt-core dbt-adapters dbt-<your-adapter-name>`.","cause":"This typically indicates an incompatibility between the installed `dbt-adapters` version and other dbt packages (like `dbt-core` or specific database adapters) after an upgrade or during dependency resolution.","error":"ModuleNotFoundError: No module named 'dbt.adapters.base.impl'"},{"fix":"Install the correct dbt adapter package for your database (e.g., `pip install dbt-snowflake` for Snowflake) and ensure it's compatible with your `dbt-core` version. Verify that your `profiles.yml` correctly specifies the adapter type.","cause":"This error occurs when dbt-core cannot locate the installed adapter plugin for the specified database type in your `profiles.yml` file, often due to a missing adapter installation or an incompatible version.","error":"Could not find adapter type <adapter_name>!"},{"fix":"Ensure you are running the dbt command from the directory immediately outside your dbt project (e.g., `~/my-project-dir/` if your project is `~/my-project-dir/sample-dbt-project`). Also, check the `DBT_PROJECT_NAME` variable in your `yarn.env` file.","cause":"This error often indicates that dbt commands are not being issued from the correct directory containing the `yarn.env` file, especially in environments like Cloudera Data Engineering (CDE).","error":"Command '['tar', '-zcf', '/tmp/dbt-workspace.tar.gz', 'xxx']' returned non-zero exit status 2."}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":0,"quickstart_tag":"stale","pypi_latest":"1.23.0","install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":2.04,"mem_mb":20.4,"disk_size":"74.6M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":1,"wheel_type":null,"failure_reason":"build_error","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.94,"mem_mb":20.3,"disk_size":"74.1M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":6,"import_time_s":1.31,"mem_mb":17.5,"disk_size":"75M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":1,"wheel_type":null,"failure_reason":"build_error","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.33,"mem_mb":17.4,"disk_size":"75M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":2.62,"mem_mb":21.7,"disk_size":"79.2M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":1,"wheel_type":null,"failure_reason":"build_error","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.72,"mem_mb":21.6,"disk_size":"78.7M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":5.9,"import_time_s":1.87,"mem_mb":18.9,"disk_size":"80M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":1,"wheel_type":null,"failure_reason":"build_error","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.68,"mem_mb":18.9,"disk_size":"80M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":2.18,"mem_mb":21.4,"disk_size":"70.4M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":1,"wheel_type":null,"failure_reason":"build_error","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.44,"mem_mb":21.3,"disk_size":"70.0M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":4.9,"import_time_s":1.92,"mem_mb":18.5,"disk_size":"71M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":1,"wheel_type":null,"failure_reason":"build_error","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.93,"mem_mb":18.5,"disk_size":"71M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":2.02,"mem_mb":22.4,"disk_size":"70.2M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":1,"wheel_type":null,"failure_reason":"build_error","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":2.21,"mem_mb":22.4,"disk_size":"69.6M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":5.1,"import_time_s":1.7,"mem_mb":19.5,"disk_size":"71M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":1,"wheel_type":null,"failure_reason":"build_error","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.87,"mem_mb":19.5,"disk_size":"70M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":2.01,"mem_mb":21.6,"disk_size":"73.6M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":1,"wheel_type":null,"failure_reason":"build_error","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.95,"mem_mb":21.7,"disk_size":"73.5M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":6.7,"import_time_s":1.72,"mem_mb":18.7,"disk_size":"74M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":1,"wheel_type":null,"failure_reason":"build_error","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.56,"mem_mb":18.8,"disk_size":"74M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null}]},"quickstart_checks":{"last_tested":"2026-04-24","tag":"stale","tag_description":"widespread failures or data too old to trust","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]}}