Skip to main content

Database Connection

Sequelize Dart supports multiple database dialects. This guide explains how to connect to various databases using the SequelizeConnection factory class.

Quick Start

The easiest way to create a connection is using the SequelizeConnection factory. This provides a type-safe API with discoverable parameters for each dialect.

// Basic PostgreSQL connection
final sequelize = Sequelize().createInstance(
connection: SequelizeConnection.postgres(
host: 'localhost',
database: 'my_db',
user: 'postgres',
password: 'password',
),
logging: (sql) => SqlFormatter.printFormatted(sql),
);

Instance Options

When calling createInstance(), you can provide global options that apply to the entire instance:

OptionTypeDescription
connectionSequelizeCoreOptionsThe connection configuration created via SequelizeConnection.
loggingFunction(String sql)?A callback to log SQL queries. Use SqlFormatter for pretty printing.
poolSequelizePoolOptions?Connection pool settings (max, min, idle, etc.).

Supported Dialects

Choose your database dialect below to see specific connection examples and configuration options.

PostgreSQL

Connect to PostgreSQL using SequelizeConnection.postgres().

Standard Connection

SequelizeConnection.postgres(
host: 'localhost',
database: 'my_database',
user: 'user',
password: 'password',
port: 5432,
)

Connection via Unix Socket

Use the host option with the absolute path to the socket file:

SequelizeConnection.postgres(
host: '/var/run/postgresql',
database: 'my_database',
user: 'user',
)

Configuration Options

OptionTypeDefaultDescription
urlString?-Full connection URL. Overrides individual options.
hostString'localhost'Hostname or Unix socket path.
portint5432Database port.
userString?-Database username.
passwordString?-Database password.
databaseString?-Database name.
schemaString'public'The default schema to use.
sslObject?falseSSL config (bool or SslConfig).
applicationNameString?-Name of the application for pg_stat_activity.
clientEncodingString'utf8'Character encoding for the connection.
queryTimeoutint?-Query timeout in milliseconds.
keepAlivebooltrueEnable TCP keep-alive.

SSL Configuration

For dialects that support SSL (PostgreSQL, MySQL, MariaDB, DB2), use the SslConfig class for typed security options.

// Simple: Enable SSL with default validation
SequelizeConnection.postgres(ssl: true)

// Advanced: Custom certificates and stricter validation
SequelizeConnection.postgres(
ssl: SslConfig(
ca: File('ca.pem').readAsStringSync(),
cert: File('client-cert.pem').readAsStringSync(),
key: File('client-key.pem').readAsStringSync(),
rejectUnauthorized: true,
),
)

// Development: Allow self-signed certificates
SequelizeConnection.postgres(ssl: SslConfig.selfSigned())

Connection Pool

The connection pool manages database connections to improve performance.

final sequelize = Sequelize().createInstance(
connection: SequelizeConnection.postgres(...),
pool: SequelizePoolOptions(
max: 10, // Max connections
min: 0, // Min connections
idle: 10000, // Max idle time (ms)
acquire: 30000, // Max time to get connection (ms)
evict: 1000, // Idle connection eviction interval (ms)
),
);