Skip to main content

Database

Struct Database 

Source
pub struct Database { /* private fields */ }
Expand description

A shared handle to an open DuckDB database.

Cloning a Database is cheap (an Arc bump) and does not touch DuckDB. Use connect to spawn independent Connections that share this database — including, for :memory: databases, connections that observe the same data.

This is different from calling Connection::open_in_memory multiple times, which gives each connection its own independent in-memory database:

use better_duck_core::{connection::Connection, database::Database};

// Shared: both connections see the same in-memory data.
let db = Database::open_in_memory().expect("open database");
let mut a = db.connect().expect("connect");
let mut b = db.connect().expect("connect");
a.execute_batch("CREATE TABLE t (id INTEGER)").expect("create table");
b.execute_batch("INSERT INTO t VALUES (1)").expect("insert");

// Independent: each has its own in-memory database.
let mut x = Connection::open_in_memory().expect("open");
let mut y = Connection::open_in_memory().expect("open");

Implementations§

Source§

impl Database

Source

pub fn open<P: AsRef<Path>>(path: P) -> Result<Database>

Opens a database at the given file path.

§Errors

Returns an error if the database cannot be opened or the path contains a nul byte.

Source

pub fn open_with_flags<P: AsRef<Path>>( path: P, config: Config, ) -> Result<Database>

Opens a database at the given file path with additional config.

§Errors

Returns an error if the database cannot be opened or the path contains a nul byte.

Source

pub fn open_in_memory() -> Result<Database>

Opens an in-memory database.

§Errors

Returns an error if the database cannot be opened.

Source

pub fn open_in_memory_with_flags(config: Config) -> Result<Database>

Opens an in-memory database with additional config.

§Errors

Returns an error if the database cannot be opened.

Source

pub fn connect(&self) -> Result<Connection>

Opens a new connection to this database.

This is a single duckdb_connect call — no file I/O. All connections opened from this Database (or its clones) share the same underlying data.

§Errors

Returns an error if the connection cannot be established.

Trait Implementations§

Source§

impl Clone for Database

Source§

fn clone(&self) -> Database

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Database

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.