Spec-Zone.ru › DuckDB

Rust API

Установка

API DuckDB Rust можно установить с crates.io. Подробности можно найти на docs.rs.

Базовое использование API

duckdb-rs — это удобная обертка над DuckDB C API. Подробности см. в README.

Инициализация и завершение

Для использования DuckDB необходимо сначала инициализировать обработчик Connection с помощью Connection::open(). Connection::open() принимает в качестве параметра файл базы данных для чтения и записи. Если файла базы данных не существует, он будет создан (расширение файла может быть .db, .duckdb, или любым другим). Также можно использовать Connection::open_in_memory() для создания базы данных в памяти. Обратите внимание, что для базы данных в памяти данные не сохраняются на диск (т.е. все данные теряются при выходе из процесса).

use duckdb::{params, Connection, Result};
let conn = Connection::open_in_memory()?;

Вы можете conn.close() обработчик Connection вручную или просто исключить его из области видимости. Мы реализовали Drop-трейт, который автоматически закроет подлежащее подключение к базе данных.

Запросы

SQL-запросы можно отправлять в DuckDB, используя метод execute() подключений, или можно предварительно подготовить оператор, а затем выполнить запрос.

#[derive(Debug)]
struct Person {
    id: i32,
    name: String,
    data: Option<Vec<u8>>,
}

conn.execute(
    "INSERT INTO person (name, data) VALUES (?, ?)",
    params![me.name, me.data],
)?;

let mut stmt = conn.prepare("SELECT id, name, data FROM person")?;
let person_iter = stmt.query_map([], |row| {
    Ok(Person {
        id: row.get(0)?,
        name: row.get(1)?,
        data: row.get(2)?,
    })
})?;

for person in person_iter {
    println!("Found person {:?}", person.unwrap());
}

Присоединённый модуль

Клиент Rust поддерживает DuckDB API присоединённого модуля для массового вставки данных. Например:

fn insert_rows(conn: &Connection) -> Result<()> {
    let mut app = conn.appender("foo")?;
    app.append_rows([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]])?;
    Ok(())
}

© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/api/rust.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API