Zde je průvodce, který vám pomůže začít s používáním databází SQL v Rustu.

Jak vytváříte další programy Rust, možná budete muset spolupracovat s databázemi pro ukládání a získávání dat.

Silné psaní, bezpečnost paměti a výkon Rustu v kombinaci s podporou asynchronních operací, ORM a migrace, umožňují efektivní a škálovatelné zpracování dat, díky čemuž je Rust vynikající volbou pro budování databáze aplikací.

Úvod do používání SQL databází v Rustu

V ekosystému Rust existuje mnoho databázových přepravek a knihoven, které poskytují podporu pro různá databázová paradigmata.

U SQL databází si můžete vybrat mezi databázovými ovladači jako např Libpq, Mysql konektor, a Sqlite3 které poskytují rozhraní pro programy Rust pro přímou interakci s databázemi bez jakékoli abstraktní vrstvy na SQL a ORM (Object-Relational Mappers), jako je Diesel, SQLx, a Rust-postgres které poskytují pohodlný způsob práce s databází Datové typy rzi jako jsou struktury a funkce.

Diesel ORM je jedním z nejpopulárnějších databázových balíčků v ekosystému Rust. Jako ORM poskytuje Diesel funkce od vytváření a provádění dotazů po definici modelu a migraci schémat databáze, což vám usnadňuje interakci s databázemi a

instagram viewer
psát efektivní, čistý a snadno udržovatelný kód.

Diesel také podporuje více databázových strojů včetně PostgreSQL, MySQL a SQLitea poskytuje robustní sadu funkcí pro zpracování složitých databázových operací, jako jsou transakce, spojení a agregační funkce.

Díky výkonným nástrojům, funkcím a vynikající dokumentaci se Diesel stal oblíbenou volbou pro mnoho vývojářů Rust, kteří chtějí vytvářet robustní a škálovatelné aplikace založené na datech.

Začínáme s dieselem

Budete muset přidat diesel a dotenv přepravky do závislostí vašeho projektu v sekci závislostí vašeho cargo.toml soubor.

[závislosti]
diesel = { verze = "1.4.4", vlastnosti = ["sqlite"] }
dotenv = "0.15.0"

Po přidání přepravek jako závislostí musíte nainstalovat diesel_cli Nástroj CLI pro interakci s Diesel.

Spuštěním tohoto příkazu nainstalujte diesel_cli nástroj:

cargo install diesel_cli

Nástroj CLI můžete vyvolat pomocí diesel příkaz po instalaci nástroje.

Dále vytvořte soubor proměnných prostředí a zadejte adresu URL databáze.

Spuštěním tohoto příkazu vytvoříte a vložíte adresu URL databáze pro databázi SQLite v paměti.

echo DATABASE_URL=database.db > .env

Chcete-li pracovat s Diesel, musíte do počítače nainstalovat sqlite3 nebo preferovanou databázi.

Nakonec spusťte založit příkaz pro Diesel pro nastavení databáze pro váš projekt:

nastavení dieselu

The založit příkaz vytvoří a migrací adresář, vytvoří databázi uvedenou v DATABASE_URLa spouští existující migrace.

Nastavení migrací s dieselem

Po nastavení databáze pomocí Diesel budete používat migrace generovat příkaz pro generování migračních souborů. Jako argument přidáte název souboru:

migrace nafty generovat create_humans

Příkaz vygeneruje dva soubory SQL v migrací adresář: up.sql a down.sql.

Napíšete SQL pro definice databázových tabulek v up.sql soubor:

-- Vaše SQL jde sem

VYTVOŘITSTŮL"člověk"
(
"ID" INTEGER NENÍ NULL AUTOINCREMENT PRIMÁRNÍHO KLÍČE,
"first_name" TEXT NOT NULL,
"last_name" TEXT NOT NULL,
"věk" INTEGER NOT NULL
);

Napíšete kód SQL, abyste odstranili databázové tabulky v down.sql soubor:

-- down.sql

-- Tento soubor by měl vrátit zpět cokoli v `up.sql`
POKLESSTŮL"člověk"

Po zapsání souborů SQL spusťte soubor migrační běh příkaz použít čekající migrace.

naftový migrační běh

Kromě toho můžete použít předělat migraci příkaz pro vrácení migrací:

předělat migraci nafty

Také můžete použít tiskové schéma příkaz k tisku schématu. Příkaz vytiskne obsah souboru schema.rs soubor.

dieselové tiskové schéma

Výstup z schéma_tisku příkaz je kód Rust, který odpovídá vašemu schématu SQL:

Připojení k vaší SQL databázi pomocí Diesel

Nejprve do svého souboru přidejte tyto importy a direktivy:

mod schéma;

#[makro_použití]
externíbedna nafta;
použití dotenv:: dotenv;
použití diesel:: předehra::*;
použití std:: env;
použití Diesel::{Connection, ExpressionMethods, QueryDsl, RunQueryDsl, SqliteConnection};
použití bedna:: schéma:: člověk;

Importy a direktivy použijete k připojení k databázi a provádění operací.

Zde je návod, jak se můžete připojit k databázi SQLite pomocí funkce a vrátit instanci připojení:

použití std:: env;
použití diesel::{Connection, SqliteConnection};

fnnavázat_připojení() -> SqliteConnection {
dotenv().ok();

nechat database_url = env:: var("DATABASE_URL")
.očekávat("Musí být nastavena DATABASE_URL");
SqliteConnection:: create(&database_url)
.unwrap_or_else(|_| panika!("Chyba při připojování k {}", database_url))
}

The navázat_připojení funkce vrací strukturu instance připojení (SqliteConnection). The navázat_připojení načte proměnné prostředí s OK přistupuje k URL databáze pomocí var a naváže spojení s databází přes URL s založit funkce.

Po úspěšném připojení můžete provádět dotazy a vkládat je do databáze.

Vkládání hodnot do databáze pomocí dieselu

K vložení hodnot do databáze použijete strukturu, která odpovídá vašemu schématu SQL.

Zde je struktura, která odpovídá člověk schéma tabulky:

#[odvodit (dotazovatelný)]
hospodastrukturovatČlověk {
hospoda id: i32,
hospoda jméno: Tětiva,
hospoda příjmení: Tětiva,
hospoda stáří: i32,
}

Funkce vložení vrátí instanci souboru Člověk typ pro jiné operace.

Pro funkci vkládání budete potřebovat strukturu; struktura bude implementovat dva atributy makra, jeden pro funkci vkládání a druhý, který identifikuje tabulku pro operaci.

Zde je struktura pro operaci vložení:

#[odvodit (vložit)]
#[název_tabulky = "člověk"]
strukturovatNewHuman<'A> {
jméno: &'Astr,
příjmení: &'Astr,
stáří: i32,
}

Vaše funkce vkládání převezme instanci připojení a data, která chcete vložit do databáze. Vložte data a vytiskněte zprávu na základě stavu operace.

fnVlož do<'A>(conn: &SqliteConnection, křestní_jméno: &'Astr, příjmení: &'Astr, věk: i32) -> Člověk {
použití bedna:: schéma:: člověk;

nechat new_human = NewHuman {
jméno,
příjmení,
stáří,
};

diesel:: insert_into (člověk:: tabulka).values(&new_human).execute (conn).expect("Chyba při vkládání nového člověka");

human:: table.order (human:: id.desc()).first (conn).unwrap()
}

The Vlož do funkce převezme parametry a vloží hodnoty do databáze s Diesel's Vlož do funkce, která bere v tabulce a hodnoty funkce, která přijímá instanci struct. Funkce přiřadí ID v sestupném pořadí s desc funkci před provedením operace.

Zde je hlavní funkce, která volá Vlož do funkce:

fnhlavní() {
nechat conn = navázat_připojení();
nechat new_human = insert_into(&conn, "John", "Srna", 25);
println!("Vložen nový člověk s ID: {}", new_human.id);

}

The spoj proměnná je instance připojení a nový_člověk proměnná je volání funkce. The hlavní funkce vytiskne ID po úspěšné operaci.

Dotazování databází s Diesel

Alternativně bude vaše struktura dotazovací funkce implementovat Dotazovatelné atribut s a odvodit makro.

Zde je struktura pro operaci dotazu:

// Definujte strukturu, která představuje řádek ve vaší tabulce
#[odvodit (dotazovatelný)]
strukturovatČlověk {
id: i32,
jméno: Tětiva,
příjmení: Tětiva,
stáří: i32,
}

Funkce dotazu vezme instanci připojení a vrátí a Člověk struktura takto:

fndotaz_db(conn: &SqliteConnection) -> Člověk {
human.filter (age.eq(25)).first (conn).expect("Chyba při dotazování databáze")
}

The dotaz_db funkce filtruje lidskou tabulku pro řádek, kde je stáří rovná se 25 a vrátí první výskyt jako instanci struktury.

fnhlavní() {

nechat conn = navázat_připojení();
nechat osoba = query_db(&conn);

println!("ID: {}", osoba.id);
println!("Jméno: {}", osoba.křestní_jméno);
println!("Příjmení: {}", osoba.prijmeni);
println!("Věk: {}", osoba.věk);
}

V hlavní funkce, osoba proměnná volá dotaz_db a vytiskne pole řádku s hodnotou věku rovnou 25.

Můžete stavět webové servery s rzí

Rust stále získává na popularitě ve vývoji webových aplikací jako jazyk na straně serveru s knihovnami jako Actix-web a Raketa které usnadňují nastavení serverů a vytváření rozhraní API a webových stránek abstrahováním komplexních funkcí.

Většina webových serverů musí spolupracovat s databázemi pro ukládání a získávání dat. Své aplikace poháněné dieselovým motorem můžete dále integrovat s Actix-web nebo Rocket a vytvářet sofistikované webové aplikace.