Crate tokio_rusqlite
source ·Expand description
Asynchronous handle for rusqlite library.
§Guide
This library provides Connection
struct. Connection
struct is a handle
to call functions in background thread and can be cloned cheaply.
Connection::call
method calls provided function in the background thread
and returns its result asynchronously.
§Design
A thread is spawned for each opened connection handle. When call
method
is called: provided function is boxed, sent to the thread through mpsc
channel and executed. Return value is then sent by oneshot channel from
the thread and then returned from function.
§Example
use tokio_rusqlite::{params, Connection, Result};
#[derive(Debug)]
struct Person {
id: i32,
name: String,
data: Option<Vec<u8>>,
}
#[tokio::main]
async fn main() -> Result<()> {
let conn = Connection::open_in_memory().await?;
let people = conn
.call(|conn| {
conn.execute(
"CREATE TABLE person (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
data BLOB
)",
[],
)?;
let steven = Person {
id: 1,
name: "Steven".to_string(),
data: None,
};
conn.execute(
"INSERT INTO person (name, data) VALUES (?1, ?2)",
params![steven.name, steven.data],
)?;
let mut stmt = conn.prepare("SELECT id, name, data FROM person")?;
let people = stmt
.query_map([], |row| {
Ok(Person {
id: row.get(0)?,
name: row.get(1)?,
data: row.get(2)?,
})
})?
.collect::<std::result::Result<Vec<Person>, rusqlite::Error>>()?;
Ok(people)
})
.await?;
for person in people {
println!("Found person {:?}", person);
}
Ok(())
}
Modules§
- Automatic extension loading
- Configure database connections
- Traits dealing with SQLite data types.
Macros§
- A macro making it more convenient to pass lists of named parameters as a
&[(&str, &dyn ToSql)]
. - A macro making it more convenient to longer lists of parameters as a
&[&dyn ToSql]
.
Structs§
- An iterator over the mapped resulting rows of a query, with an Error type unifying with Error.
- Batch iterator
- Cacheable statement.
- A handle to call functions in background thread.
- Allows interrupting a long-running computation.
F
is used to transform the streaming iterator into a fallible iterator.- An iterator over the mapped resulting rows of a query.
- Flags for opening SQLite database connections. See sqlite3_open_v2 for details.
- Prepare flags. See sqlite3_prepare_v3 for details.
- A single result row of a query.
- A handle for the resulting rows of a query.
- Represents a savepoint on a database connection.
- A prepared statement.
- Represents a transaction on a database connection.
Enums§
- Name for a database within a SQLite connection.
- Options for how a Transaction or Savepoint should behave when it is dropped.
- Represents the errors specific for this library.
- Error Codes
- Prepared statement status counters.
- Options for transaction behavior. See BEGIN TRANSACTION for details.
Constants§
- Shorthand for
DatabaseName::Main
. - Shorthand for
DatabaseName::Temp
.
Traits§
- See the method documentation.
- Trait used for sets of parameter passed into SQL statements/queries.
- A trait implemented by types that can index into columns of a row.
- A trait for types that can be converted into SQLite values. Returns
Error::ToSqlConversionFailure
if the conversion fails.
Functions§
- Constructor function for a
ParamsFromIter
. See its documentation for more. - Transform Rust error to SQLite error (message and code).
- Returns the SQLite version as a string; e.g.,
"3.16.2"
for version 3.16.2. - Returns the SQLite version as an integer; e.g.,
3016002
for version 3.16.2.
Type Aliases§
- The result returned on method calls in this crate.