Íme egy útmutató, amely segít az SQL-adatbázisok használatának megkezdésében a Rustban.

Ahogy egyre több Rust-programot épít, előfordulhat, hogy adatbázisokkal kell kölcsönhatásba lépnie az adatok tárolása és visszakeresése céljából.

A Rust erős gépelése, memóriabiztonsága és teljesítménye az aszinkron műveletek, ORM-ek és A migráció lehetővé teszi a hatékony és méretezhető adatfeldolgozást, így a Rust kiváló választás adatbázis-építéshez alkalmazások.

Bevezetés az SQL-adatbázisok használatába a Rustban

A Rust ökoszisztémában számos adatbázis-láda és könyvtár található, amelyek támogatják a különféle adatbázis-paradigmákat.

SQL-adatbázisok esetén választhat az adatbázis-illesztőprogramok közül, mint például Libpq, Mysql-csatlakozó, és Sqlite3 amelyek interfészt biztosítanak a Rust programok számára, hogy közvetlenül, az SQL-en és az ORM-eken (Object-Relational Mappers) lévő absztrakciós réteg nélkül interakcióba lépjenek az adatbázisokkal, mint pl. Dízel, Sqlx, és Rust-postgres amelyek kényelmes módot biztosítanak az adatbázisokkal való munkavégzéshez

instagram viewer
Rozsda adattípusok mint például a struktúrák és a függvények.

A Diesel ORM az egyik legnépszerűbb adatbáziscsomag a Rust ökoszisztémában. ORM-ként a Diesel funkciókat kínál a lekérdezések felépítésétől és végrehajtásától a modelldefinícióig és az adatbázisséma-migrációig, megkönnyítve az adatbázisokkal való interakciót és hatékony, tiszta és könnyen karbantartható kódot írhat.

A dízel is támogatja több adatbázismotor, köztük a PostgreSQL, a MySQL és az SQLite, és robusztus szolgáltatáskészletet biztosít összetett adatbázis-műveletek, például tranzakciók, csatlakozások és összesítő funkciók kezelésére.

Hatékony eszközeivel, szolgáltatásaival és kiváló dokumentációjával a Diesel számos Rust fejlesztő kedvenc választásává vált, akik robusztus és méretezhető adatvezérelt alkalmazásokat szeretnének építeni.

Kezdő lépések a dízellel

Hozzá kell adnia a dízel és dotenv ládákat a projekt függőségeihez a függőségek szakaszában rakomány.toml fájlt.

[függőségek]
dízel = { verzió = "1.4.4", funkciók = ["sqlite"] }
dotenv = "0.15.0"

A ládák függőségként történő hozzáadása után telepítenie kell a diesel_cli CLI-eszköz a Dieselrel való interakcióhoz.

Futtassa ezt a parancsot a diesel_cli eszköz:

rakomány telepítés diesel_cli

A CLI eszközt a dízel parancsot az eszköz telepítése után.

Ezután hozzon létre egy környezeti változófájlt, és adja meg az adatbázis URL-címét.

Futtassa ezt a parancsot az adatbázis URL-címének létrehozásához és beszúrásához egy memóriában lévő SQLite adatbázishoz.

echo DATABASE_URL=adatbázis.db > .env

A Diesel használatához telepítenie kell az sqlite3-at vagy a kívánt adatbázist a számítógépére.

Végül futtassa a beállít parancs a Diesel számára, hogy adatbázist állítson be a projekthez:

dízel beállítás

A beállít parancs létrehozza a vándorlások könyvtárban, létrehozza a megadott adatbázist DATABASE_URL, és futtatja a meglévő migrációkat.

Migrációk beállítása dízellel

Miután beállította az adatbázist a Diesel-lel, használja a migráció generál parancsot a migrációs fájlok generálásához. Hozzá kell adnia a fájl nevét argumentumként:

diesel migration generál create_humans

A parancs két SQL fájlt generál a vándorlások Könyvtár: fel.sql és le.sql.

Az adatbázistábla definícióihoz SQL-t kell írnia a fel.sql fájl:

-- Ide kerül az SQL-je

TEREMTASZTAL"emberi"
(
"id" INTEGER NEM NULL ELSŐDLEGES KULCS AUTOMATIKUS NÖVELÉSE,
"first_name" TEXT NOT NULL,
"last_name" TEXT NOT NULL,
"életkor" INTEGER NOT NULL
);

SQL kódot kell írnia az adatbázistáblák eldobásához a le.sql fájl:

-- le.sql

-- Ennek a fájlnak bármit vissza kell vonnia az `up.sql` fájlból
CSEPPASZTAL"emberi"

Az SQL fájlok írása után futtassa a migrációs futás parancs a függőben lévő migrációk alkalmazásához.

dízel migrációs futás

Ezenkívül használhatja a migráció újra parancs az áttelepítések visszaállításához:

diesel migration redo

Ezenkívül használhatja a print-séma parancsot a séma kinyomtatásához. A parancs kiírja a tartalmát schema.rs fájlt.

diesel print-séma

A kimenet a print_schema parancs egy Rust kód, amely megfelel az SQL-sémának:

Csatlakozás az SQL-adatbázishoz Diesel segítségével

Először adja hozzá ezeket az importálásokat és direktívákat a fájlhoz:

mod séma;

#[makró_használat]
külsőláda dízel;
használat dotenv:: dotenv;
használat diesel:: előjáték::*;
használat std:: env;
használat Diesel::{Kapcsolat, ExpressionMethods, QueryDsl, RunQueryDsl, SqliteConnection};
használat láda:: séma:: ember;

Az importálást és az utasításokat használja az adatbázishoz való csatlakozáshoz és a műveletek végrehajtásához.

A következőképpen kapcsolódhat egy SQLite adatbázishoz egy függvény segítségével, és hogyan adhat vissza egy kapcsolatpéldányt:

használat std:: env;
használat diesel::{Connection, SqliteConnection};

fnkapcsolat létrehozása() -> SqliteConnection {
dotenv().ok();

hagyja adatbázis_url = env:: var("DATABASE_URL")
.expect("A DATABASE_URL-t be kell állítani");
SqliteConnection:: create(&adatbázis_url)
.unwrap_or_else(|_| pánik!("Hiba a következőhöz való csatlakozáskor: {}", adatbázis_url))
}

A kapcsolat létrehozása függvény visszaadja a kapcsolatpéldány struktúrát (SqliteConnection). A kapcsolat létrehozása betölti a környezeti változókat a rendben függvény eléri az adatbázis URL-jét a var függvényt, és kapcsolatot létesít az adatbázissal az URL-en keresztül a létrehozni funkció.

Sikeres csatlakozás után lekérdezéseket hajthat végre, és beillesztheti őket az adatbázisba.

Értékek beszúrása egy adatbázisba Diesel segítségével

Az SQL-sémának megfelelő struktúrát használjon értékek beszúrásához az adatbázisba.

Itt van egy struktúra, amely megfelel a emberi táblázat séma:

#[derive (lekérdezhető)]
kocsmastructEmberi {
kocsma azonosító: i32,
kocsma keresztnév: Húr,
kocsma vezetéknév: Húr,
kocsma kor: i32,
}

A beszúrási függvény a Emberi típust az egyéb műveletekhez.

Szüksége lesz egy struktúrára a beillesztési funkcióhoz; a struktúra két makróattribútumot valósít meg, az egyik a beillesztési funkcióhoz, a másik pedig a művelet tábláját azonosítja.

Íme a beillesztési művelet szerkezete:

#[derive (Beszúrható)]
#[tábla_neve = "emberi"]
structNewHuman<'a> {
keresztnév: &'astr,
vezetéknév: &'astr,
kor: i32,
}

Az Ön beszúrási funkciója bevesz egy kapcsolatpéldányt és az adatbázisba beszúrni kívánt adatokat. Illessze be az adatokat és nyomtasson egy üzenetet a művelet állapota alapján.

fnbeszúrás_be<'a>(conn: &SqliteConnection, keresztnév: &'astr, vezetéknév: &'astr, életkor: i32) -> Ember {
használat láda:: séma:: ember;

hagyja new_human = ÚjEmber {
keresztnév,
vezetéknév,
kor,
};

diesel:: insert_into (human:: table).values(&new_human).execute (conn).expect("Hiba az új ember beszúrásakor");

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

A beszúrás_be függvény beveszi a paramétereket és beszúrja az értékeket az adatbázisba a Diesel segítségével beszúrás_be függvény, amely beveszi a táblázatot és a értékeket függvény, amely egy struct példányt vesz fel. A funkció az azonosítót a következővel csökkenő sorrendben rendeli hozzá desc funkciót a művelet végrehajtása előtt.

Íme a fő- függvény, amely meghívja a beszúrás_be funkció:

fnfő-() {
hagyja conn = kapcsolat_létesítése();
hagyja new_human = insert_into(&conn, "János", "Dámvadtehén", 25);
println!("Új ember beszúrva a következő azonosítóval: {}", new_human.id);

}

A konn változó egy kapcsolatpéldány, és a new_human változó a függvényhívás. A fő- funkció sikeres művelet után kinyomtatja az azonosítót.

Adatbázisok lekérdezése Diesel segítségével

Alternatív megoldásként a lekérdezési függvénystruktúrája megvalósítja a Lekérdezhető attribútum a származik makró.

Íme a lekérdezési művelet struktúrája:

// Határozzon meg egy struktúrát, amely egy sort reprezentál a táblázatban
#[derive (lekérdezhető)]
structEmberi {
azonosító: i32,
keresztnév: Húr,
vezetéknév: Húr,
kor: i32,
}

A lekérdező függvény felvesz egy kapcsolatpéldányt, és a következőt adja vissza Emberi a következőképpen építsd fel:

fnquery_db(csatlakozás: &SqliteConnection) -> Human {
human.filter (age.eq(25)).first (conn).expect("Hiba az adatbázis lekérdezésekor")
}

A query_db függvény szűri a humán táblázatot arra a sorra, ahol a kor egyenlő 25-tel, és az első előfordulást struct példányként adja vissza.

fnfő-() {

hagyja conn = kapcsolat_létesítése();
hagyja személy = query_db(&conn);

println!("azonosító: {}", személy.azonosító);
println!("Keresztnév: {}", személy.utónév);
println!("Vezetéknév: {}", személy.vezetéknév);
println!("Kor: {}", személy.kor);
}

Ban,-ben fő- funkció, a személy változó a query_db függvényt, és kiírja a sor mezőit 25-ös korértékkel.

Webszervereket készíthet rozsdával

A Rust továbbra is egyre népszerűbb a webfejlesztésben, mint szerveroldali nyelv, olyan könyvtárakkal, mint például Actix-web és Rakéta amelyek megkönnyítik a szerverek beállítását, valamint az API-k és webhelyek létrehozását az összetett funkciók elvonásával.

A legtöbb webszervernek kölcsönhatásba kell lépnie az adatbázisokkal az adatok tárolása és visszakeresése céljából. Tovább integrálhatja dízelmotoros alkalmazásait az Actix-web vagy a Rocket szolgáltatással kifinomult webalkalmazások létrehozásához.