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
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.