SQLite dialect that uses the better-sqlite3 library. This dialect is ideal for embedded databases, testing, and small-scale applications.Source:src/dialect/sqlite/sqlite-dialect.ts:38
import { Kysely, SqliteDialect } from 'kysely'import Database from 'better-sqlite3'const db = new Kysely<DatabaseSchema>({ dialect: new SqliteDialect({ database: new Database('path/to/database.db') })})
An SQLite Database instance or a function that returns one.If a function is provided, it’s called once when the first query is executed.See better-sqlite3 documentation for available database options.
Called once when the first query is executed. This is a Kysely-specific feature and does not come from the better-sqlite3 module.Useful for setting up database-level configuration like PRAGMA statements.
new SqliteDialect({ database: new Database('db.sqlite'), onCreateConnection: async (connection) => { await connection.executeQuery( CompiledQuery.raw('PRAGMA foreign_keys = ON') ) }})
When creating a better-sqlite3 Database instance, you can pass various options:
import Database from 'better-sqlite3'const database = new Database('mydb.db', { readonly: false, // Open in read-only mode fileMustExist: false, // Throw error if file doesn't exist timeout: 5000, // Milliseconds to wait for lock before throwing SQLITE_BUSY verbose: console.log, // Log every SQL statement})
import Database from 'better-sqlite3'const database = new Database('mydb.db')database.pragma('journal_mode = WAL')const db = new Kysely<DatabaseSchema>({ dialect: new SqliteDialect({ database })})
import Database from 'better-sqlite3'const db = new Kysely<DatabaseSchema>({ dialect: new SqliteDialect({ database: new Database('mydb.db', { readonly: true }) })})