> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cockroachlabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Install a Driver or ORM Framework

CockroachDB supports both native drivers and the PostgreSQL wire protocol, so most available PostgreSQL client drivers and ORM frameworks should work with CockroachDB.

Choose a language for supported clients, and follow the installation steps. After you install a client library, you can [connect to the database](/docs/stable/connect-to-the-database.md).

> [!NOTE]
>
> Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please [contact Support](/docs/stable/support-resources.md).

> **JavaScript/TypeScript**
>
> View support and resources for pg, Sequelize, Knex.js, TypeORM, or Prisma
>
> ## JavaScript drivers
>
> ### pg
>
> **Support level:** Full
>
> To install the [Node.js pg driver](https://www.npmjs.com/package/pg):
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ npm install pg
> ```
>
> For a simple but complete example app, see [Build a Node.js App with CockroachDB and the Node.js pg Driver](/docs/stable/build-a-nodejs-app-with-cockroachdb.md).
>
> ## JavaScript/TypeScript ORM frameworks
>
> ### Sequelize
>
> **Support level:** Full
>
> To install Sequelize and a [CockroachDB Node.js package](https://github.com/cockroachdb/sequelize-cockroachdb) that accounts for some minor differences between CockroachDB and PostgreSQL:
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ npm install sequelize sequelize-cockroachdb
> ```
>
> For a simple but complete example app, see [Build a Node.js App with CockroachDB and Sequelize](/docs/stable/build-a-nodejs-app-with-cockroachdb-sequelize.md).
>
> ### Knex.js
>
> **Support level:** Full
>
> Install Knex.js as described in the [official documentation](https://knexjs.org/#Installation).
>
> For a simple but complete example app, see [Build a Simple CRUD Node.js App with CockroachDB and Knex.js](/docs/stable/build-a-nodejs-app-with-cockroachdb-knexjs.md).
>
> ### TypeORM
>
> **Support level:** Full
>
> Install TypeORM as described in the [official documentation](https://typeorm.io/#/).
>
> For a simple but complete example app, see [Build a TypeScript App with CockroachDB and TypeORM](/docs/stable/build-a-typescript-app-with-cockroachdb.md).
>
> ### Prisma
>
> **Support level:** Full
>
> To install the [Prisma ORM](https://prisma.io/):
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ npm install prisma
> ```
>
> For a simple but complete example app, see [Build a Simple CRUD Node.js App with CockroachDB and Prisma](/docs/stable/build-a-nodejs-app-with-cockroachdb-prisma.md).

> **Python**
>
> View support and resources for psycopg3, psycopg2, SQLAlchemy, Django, or peewee
>
> ## Python drivers
>
> ### psycopg3
>
> **Support level:** Full
>
> To install the Python psycopg3 driver:
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ pip3 install "psycopg[binary]"
> ```
>
> For other ways to install psycopg3, see the [official documentation](https://www.psycopg.org/psycopg3/docs/basic/install.html).
>
> For a simple but complete example app, see [Build a Python App with CockroachDB and psycopg3](/docs/stable/build-a-python-app-with-cockroachdb-psycopg3.md).
>
> ### psycopg2
>
> **Support level:** Full
>
> To install the Python psycopg2 driver:
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ pip install psycopg2
> ```
>
> For other ways to install psycopg2, see the [official documentation](http://initd.org/psycopg/docs/install.html).
>
> For a simple but complete example app, see [Build a Python App with CockroachDB and psycopg2](/docs/stable/build-a-python-app-with-cockroachdb.md).
>
> ## Python ORM frameworks
>
> ### SQLAlchemy
>
> **Support level:** Full
>
> To install SQLAlchemy and a [CockroachDB Python package](https://github.com/cockroachdb/sqlalchemy-cockroachdb) that accounts for some differences between CockroachDB and PostgreSQL:
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ pip install sqlalchemy sqlalchemy-cockroachdb psycopg2
> ```
>
> > [!TIP]
> >
> > You can substitute psycopg2 for other alternatives that include the psycopg python package.
>
> For other ways to install SQLAlchemy, see the [official documentation](http://docs.sqlalchemy.org/intro.html#installation-guide).
>
> For a simple but complete example app, see [Build a Python App with CockroachDB and SQLAlchemy](/docs/stable/build-a-python-app-with-cockroachdb-sqlalchemy.md).
>
> ### Django
>
> **Support level:** Full
>
> CockroachDB supports Django versions 3.1+.
>
> To install [Django](https://docs.djangoproject.com/en/4.0/topics/install/):
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ pip install django==3.1.*
> ```
>
> Before installing the [CockroachDB backend for Django](https://github.com/cockroachdb/django-cockroachdb), you must install one of the following psycopg2 prerequisites:
>
> * [psycopg2](https://pypi.org/project/psycopg2/), which has some
>   [prerequisites](https://www.psycopg.org/docs/install.html#prerequisites) of
>   its own. This package is recommended for production environments.
>
> * [psycopg2-binary](https://pypi.org/project/psycopg2-binary/). This package is recommended for development and testing.
>
> After you install the psycopg2 prerequisite, you can install the CockroachDB Django backend:
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ pip install django-cockroachdb==3.1.*
> ```
>
> > [!NOTE]
> >
> > The major version of `django-cockroachdb` must correspond to the major version of `django`. The minor release numbers do not need to match.
>
> For a simple but complete example app, see [Build a Python App with CockroachDB and Django](/docs/stable/build-a-python-app-with-cockroachdb-django.md).
>
> ### peewee
>
> **Support level:** Full
>
> To install peewee:
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ pip install peewee
> ```
>
> For instructions on using peewee with CockroachDB, see the [CockroachDatabase peewee extension documentation](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).

> **Go**
>
> View support and resources for pgx, pq, or GORM
>
> ## Go drivers
>
> ### pgx
>
> **Support level:** Full
>
> To install the [Go pgx driver](https://pkg.go.dev/github.com/jackc/pgx):
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ go get -u github.com/jackc/pgx
> ```
>
> For a simple but complete example app, see [Build a Go App with CockroachDB and the Go pgx Driver](/docs/stable/build-a-go-app-with-cockroachdb.md).
>
> ### pq
>
> **Support level:** Full
>
> To install the [Go pq driver](https://godoc.org/github.com/lib/pq):
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ go get -u github.com/lib/pq
> ```
>
> For a simple but complete example app, see [Build a Go App with CockroachDB and the Go pq Driver](/docs/stable/build-a-go-app-with-cockroachdb.md).
>
> ## Go ORM frameworks
>
> ### GORM
>
> **Support level:** Full
>
> To install [GORM](http://gorm.io):
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ go get -u github.com/lib/pq # dependency
> ```
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ go get -u github.com/jinzhu/gorm
> ```
>
> For a simple but complete example app, see [Build a Go App with CockroachDB and GORM](/docs/stable/build-a-go-app-with-cockroachdb-gorm.md).

> **Java**
>
> View support and resources for JDBC, Hibernate, or jOOQ
>
> > [!NOTE]
> >
> > We recommend using Java versions 8+ with CockroachDB.
>
> CockroachDB supports TLS 1.2 and 1.3, and uses 1.3 by default.
>
> CockroachDB supports the [TLS 1.3 and TLS 1.2](https://wikipedia.org/wiki/Transport_Layer_Security) encryption for SQL clients. Starting in CockroachDB v22.2, only cipher suites currently recommended by the IETF ([RFC 8447](https://datatracker.ietf.org/doc/html/rfc8447)) are enabled by default. In v22.2.4 and above, the environment variable `COCKROACH_TLS_ENABLE_OLD_CIPHER_SUITES` can be used to revert to the cipher suite configuration used in version 22.1. This environment variable is not available in v22.2.0-v22.2.3. You should set this environment variable only if you cannot use one of the default cipher suites, but you can use one of the disabled ones.
>
> CockroachDB supports the [TLS 1.3 and TLS 1.2](https://wikipedia.org/wiki/Transport_Layer_Security) encryption for SQL clients. Only cipher suites currently recommended by the IETF ([RFC 8447](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4)) are enabled by default. The environment variable `COCKROACH_TLS_ENABLE_OLD_CIPHER_SUITES` can be used to revert to the cipher suite configuration used prior to v22.2. You should set this environment variable only if you cannot use one of the default cipher suites, but you can use one of the disabled ones.
>
> SQL clients, intermediate proxies, or load balancers that do not support any cipher suites that CockroachDB supports will be unable to connect to CockroachDB clusters. For the full list of supported cipher suites, refer to [Supported cipher suites](https://cockroachlabs.com/docs/stable/authentication#supported-cipher-suites).
>
> [A bug in the TLS 1.3 implementation](https://bugs.openjdk.java.net/browse/JDK-8236039) in Java 11 versions lower than 11.0.7 and Java 13 versions lower than 13.0.3 makes the versions incompatible with CockroachDB.
>
> If an incompatible version is used, the client may throw the following exception:
>
> `javax.net.ssl.SSLHandshakeException: extension (5) should not be presented in certificate_request`
>
> For applications running Java 11 or 13, make sure that you have version 11.0.7 or higher, or 13.0.3 or higher.
>
> If you cannot upgrade to a version higher than 11.0.7 or 13.0.3, you must configure the application to use TLS 1.2. For example, when starting your app, use: `$ java -Djdk.tls.client.protocols=TLSv1.2 appName`
>
> ## Java drivers
>
> ### JDBC
>
> **Support level:** Full
>
> Download and set up the latest Java JDBC driver as described in the [official documentation](https://jdbc.postgresql.org/documentation/setup/).
>
> For a simple but complete example app, see [Build a Java App with CockroachDB and JDBC](/docs/stable/build-a-java-app-with-cockroachdb.md).
>
> ## Java ORM frameworks
>
> ### Hibernate
>
> **Support level:** Full
>
> You can use [Gradle](https://gradle.org/install) or [Maven](https://maven.apache.org/install.html) to get all dependencies for your application, including Hibernate. Only Hibernate versions 5.4.19 and later support the Hibernate CockroachDB dialect.
>
> If you are using Gradle, add the following to your `dependencies`:
>
> ```groovy theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> implementation 'org.hibernate:hibernate-core:{version}.Final'
> implementation 'org.postgresql:postgresql:{version}'
> ```
>
> Where `{version}` is the latest stable version.
>
> For a simple but complete example app that uses Gradle for dependency management, see [Build a Java App with CockroachDB and Hibernate](/docs/stable/build-a-java-app-with-cockroachdb-hibernate.md).
>
> If you are using Maven, add the following to your `<dependencies`:
>
> ```xml theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> <dependency>
>     <groupId>org.hibernate</groupId
>     <artifactId>hibernate-core</artifactId
>     <version>{version}.Final</version
> </dependency
> <dependency>
>     <groupId>org.postgresql</groupId
>     <artifactId>postgresql</artifactId
> </dependency
> ```
>
> Where `{version}` is the latest stable version.
>
> You will also need to specify the CockroachDB dialect in your [Hibernate configuration file](https://www.tutorialspoint.com/hibernate/hibernate_configuration.htm).
>
> Versions of the Hibernate CockroachDB dialect correspond to the version of CockroachDB installed on your machine. For example, `org.hibernate.dialect.CockroachDB201Dialect` corresponds to CockroachDB v20.1 and later, and `org.hibernate.dialect.CockroachDB192Dialect` corresponds to CockroachDB v19.2 and later.
>
> All dialect versions are forward-compatible (e.g., CockroachDB v20.1 is compatible with `CockroachDB192Dialect`), as long as your application is not affected by any backward-incompatible changes listed in your CockroachDB version's [release notes](/docs/releases/index.md). In the event of a CockroachDB version upgrade, using a previous version of the CockroachDB dialect will not break an application, but, to enable all features available in your version of CockroachDB, we recommend keeping the dialect version in sync with the installed version of CockroachDB.
>
> Not all versions of CockroachDB have a corresponding dialect yet. Use the dialect number that is closest to your installed version of CockroachDB. For example, use `CockroachDB201Dialect` when using CockroachDB v21.1 and later.
>
> ### jOOQ
>
> **Support level:** Full
>
> You can use [Gradle](https://gradle.org/install) or [Maven](https://maven.apache.org/install.html) to get all dependencies for your application, including jOOQ.
>
> For a simple but complete example app that uses Maven for dependency management, see [Build a Java App with CockroachDB and jOOQ](/docs/stable/build-a-java-app-with-cockroachdb-jooq.md).

> **Ruby**
>
> View support and resources for pg or Active Record
>
> ## Ruby drivers
>
> ### pg
>
> **Support level:** Full
>
> To install the [Ruby pg driver](https://rubygems.org/gems/pg):
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ gem install pg
> ```
>
> For a simple but complete example app, see [Build a Ruby App with CockroachDB and the Ruby pg Driver](/docs/stable/build-a-ruby-app-with-cockroachdb.md).
>
> ## Ruby ORM frameworks
>
> ### Active Record
>
> **Support level:** Full
>
> To install Active Record, the [pg driver](https://rubygems.org/gems/pg), and a [CockroachDB Ruby package](https://github.com/cockroachdb/activerecord-cockroachdb-adapter) that accounts for some minor differences between CockroachDB and PostgreSQL:
>
> ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
> $ gem install activerecord pg activerecord-cockroachdb-adapter
> ```
>
> > [!NOTE]
> >
> > The exact command above will vary depending on the desired version of Active Record. Specifically, version 6.0.x of Active Record requires version 6.0.x of the adapter and version 7.0.x of Active Record requires version 7.0.x of the adapter.
>
> For a simple but complete example app, see [Build a Ruby App with CockroachDB and Active Record](/docs/stable/build-a-ruby-app-with-cockroachdb-activerecord.md).

> **C**
>
> View support and resources for libpq
>
> ## C drivers
>
> ### libpq
>
> **Support level:** Partial
>
> Install the C libpq driver as described in the [official documentation](https://www.postgresql.org/docs/current/libpq.html).

> **C# (.NET)**
>
> View support and resources for Npgsql
>
> ## C# drivers
>
> ### Npgsql
>
> **Support level:** Full
>
> 1. Create a .NET project:
>
>    ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
>    $ dotnet new console -o cockroachdb-test-app
>    ```
>
>    ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
>    $ cd cockroachdb-test-app
>    ```
>
>    The `dotnet` command creates a new app of type `console`. The `-o` parameter creates a directory named `cockroachdb-test-app` where your app will be stored and populates it with the required files. The `cd cockroachdb-test-app` command puts you into the newly created app directory.
>
> 2. Install the latest version of the [Npgsql driver](https://www.nuget.org/packages/Npgsql/) into the .NET project using the built-in nuget package manager:
>
>    ```shell theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
>    $ dotnet add package Npgsql
>    ```
>
> For a simple but complete example app, see [Build a C# App with CockroachDB and the .NET Npgsql Driver](/docs/stable/build-a-csharp-app-with-cockroachdb.md).

> **Rust**
>
> View support and resources for rust-postgres
>
> ## Rust drivers
>
> ### rust-postgres
>
> **Support level:** Partial
>
> Install the Rust-Postgres driver as described in the [official documentation](https://crates.io/crates/postgres).
>
> For a simple but complete example app, see [Build a Rust App with CockroachDB and the Rust-Postgres Driver](/docs/stable/build-a-rust-app-with-cockroachdb.md).

## What's next?

* [Connect to CockroachDB](/docs/stable/connect-to-the-database.md)
* [Design a Database Schema](/docs/stable/schema-design-overview.md)

You might also be interested in the following pages:

* [Third party database tools](/docs/stable/third-party-database-tools.md)
* [Connection parameters](/docs/stable/connection-parameters.md)
* [Transactions](/docs/stable/transactions.md)
* [Performance best practices](/docs/stable/performance-best-practices-overview.md)
