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)
),
);