- Retrieve database credentials
- Install the libSQL client
- Connect to a remote Bunny Database
- Execute a query using SQL
Quickstart
1
Retrieve database credentials
You will need an existing database to continue. If you don’t have one, create one.Navigate to Dashboard > Edge Platform > Database > [Select Database] > Access to find your database URL and generate an access token.
You should store these as environment variables to keep them secure.
2
Install @libsql/client
Install the libSQL client package:
3
Initialize a new client
Create a client instance with your database URL and auth token:
4
Execute a query using SQL
You can execute a SQL query against your database by calling If you need to use placeholders for values, you can do that:
execute():Using with Bunny Edge Scripting
You can connect Edge Scripts to your database by adding credentials as environment variables directly from the database dashboard. See Edge Scripting for step-by-step instructions on connecting your script to Bunny Database.When using Edge Scripting, your database credentials are automatically
available as
DB_URL and DB_TOKEN environment variables after generating a
token from the database dashboard.Using with Magic Containers
You can connect Magic Container apps to your database by adding credentials as environment variables directly from the database dashboard. See Magic Containers for step-by-step instructions on connecting your app to Bunny Database.When using Magic Containers, your database credentials are automatically
available as
DB_URL and DB_TOKEN environment variables after generating a
token from the database dashboard.Response
Each query method returns aPromise<ResultSet>:
| Property | Type | Description |
|---|---|---|
rows | Array<Row> | An array of Row objects containing the row values, empty for write operations |
columns | Array<string> | An array of strings with the names of the columns in the order they appear in each Row |
rowsAffected | number | The number of rows affected by a write statement, 0 otherwise |
lastInsertRowid | bigint | undefined | The ID of a newly inserted row, or undefined if there is none for the statement |
Placeholders
libSQL supports the use of positional and named placeholders within SQL statements:libSQL supports the same named placeholder characters as SQLite —
:, @ and
$.Batch Transactions
A batch consists of multiple SQL statements executed sequentially within an implicit transaction. The backend handles the transaction: success commits all changes, while any failure results in a full rollback with no modifications.Transaction Modes
| Mode | SQLite command | Description |
|---|---|---|
write | BEGIN IMMEDIATE | The transaction may execute statements that read and write data. Write transactions executed on a replica are forwarded to the primary instance, and can’t operate in parallel. |
read | BEGIN TRANSACTION READONLY | The transaction may only execute statements that read data (select). Read transactions can occur on replicas, and can operate in parallel with other read transactions. |
deferred | BEGIN DEFERRED | The transaction starts in read mode, then changes to write as soon as a write statement is executed. This mode change may fail if there is a write transaction currently executing on the primary. |
Interactive Transactions
Interactive transactions in SQLite ensure the consistency of a series of read and write operations within a transaction’s scope. These transactions give you control over when to commit or roll back changes, isolating them from other client activity.| Method | Description |
|---|---|
execute() | Similar to execute() except within the context of the transaction |
commit() | Commits all write statements in the transaction |
rollback() | Rolls back the entire transaction |
close() | Immediately stops the transaction |