psql
If you have an active WireGuard tunnel to your organization’s private network, you can connect from a local machine to your Postgres cluster the same way you would from a Fly app within the same private network. For example, the following command would start an interactive terminal session on the cluster leader withpsql:
Connecting with Ruby
docs Ruby apps use thepg gem to connect to postgres.
Connecting with Rails
docs Rails apps automatically connect to the database specified in theDATABASE_URL environment variable.
You can set this variable manually with flyctl secrets set
Connecting with Python
psycopg is the recommended driver for connecting
to postgres:
Connecting with Django
docspsycopg is the recommended driver for connecting
to postgres. You can use the django-environ
package to translate the DATABASE_URL environment variable into Django database
configuration. First, install both packages:
DATABASES in our settings.py file.
DATABASE_URL manually with flyctl secrets set:
.env file:
Connecting with Go
docspgx is the recommended driver for connecting to postgres. It supports the standard database/sql interface as well as directly exposing low level / high performance APIs.
First, add github.com/jackc/pgx/v4 as a module dependency.
DATABASE_URL and run a query.
Connecting with Node.js
docs You’ll use thepg npm module to connect to Postgres from a Node.js app.
Connecting with Prisma – Node.js
docs Prisma is an open-source object-relational mapper (ORM) for Node.js and works with both JavaScript and TypeScript. It consists of 3 components:- Prisma Client - a type-safe query builder
- Prisma Migrate - a data modeling and migration tool
- Prisma Studio - a modern intuitive GUI for interacting with your database
Set up Prisma in your project
Set up Prisma in your project
Install the Prisma CLI and Prisma Client dependencies in your projectInitialize Prisma in your project:This command does the following:If you are working in a brownfield project, you can introspect your database to generate the models in your
- Creates a folder called
prismaat the root of your project - Creates a
.envfile at the root of your project if it doesn’t exist - Creates a
schema.prismafile inside theprismafolder. This is the file that you will use to model your data
DATABASE_URL in the .env to your PostgreSQL databaseschema.prisma file:schema.prisma file:
Add a model to your schema.prisma file:
Connecting with Sequelize – Node.js
docs Sequelize is an open-source object-relational mapper (ORM) for Node.js and works with JavaScript and TypeScript.Set up Sequelize inside your project
Set up Sequelize inside your project
Install the Sequelize dependencies and CLI into your projectInitialize Sequelize into your project:This will create the following folders:
- config, contains config file, which tells CLI how to connect with database
- models, contains all models for your project
- migrations, contains all migration files
- seeders, contains all seed files
config/config.js
.sequelizerc , this allows the CLI to be able to read your config.js file
DATABASE_URL from the env into the Sequelize constructor in models/index.js to be able to connect to your fly postgres app and confirm the new Sequelize connection with the async function below
Configure Sequelize to connect with your read replica databases
Configure Sequelize to connect with your read replica databases
Fly docs: How to add Read Replica database with flyctlSet the Sequelize constructor in
model/index.js to conditionally connect to the primary/read-replica database depending on the primary region value set in fly.toml.