Siin on juhend, mis aitab teil Rustis SQL-andmebaaside kasutamist alustada.

Kui loote rohkem Rusti programme, peate võib-olla suhtlema andmebaasidega andmete salvestamiseks ja hankimiseks.

Rusti tugev tippimine, mälu ohutus ja jõudlus koos asünkroonsete toimingute, ORM-ide ja migratsioonid, võimaldavad tõhusat ja skaleeritavat andmetöötlust, muutes Rusti suurepäraseks valikuks andmebaasi loomiseks rakendusi.

Sissejuhatus SQL-i andmebaaside kasutamiseks Rustis

Rusti ökosüsteemis on palju andmebaasikarpe ja teeke, mis pakuvad tuge erinevatele andmebaasiparadigmadele.

SQL-andmebaaside puhul saate valida näiteks andmebaasidraiverite vahel Libpq, Mysql-pistikja Sqlite3 mis pakuvad Rusti programmidele liidest andmebaasidega suhtlemiseks otse ilma SQL-i ja ORM-ide (Object-Relational Mappers) abstraktsioonikihita, näiteks Diisel, Sqlxja Rooste-postgres mis pakuvad mugavat viisi andmebaasiga töötamiseks Rooste andmetüübid nagu struktuurid ja funktsioonid.

Diesel ORM on Rusti ökosüsteemi üks populaarsemaid andmebaasipakette. ORM-ina pakub Diesel funktsioone alates päringute loomisest ja täitmisest kuni mudeli määratlemise ja andmebaasi skeemi migreerimiseni, muutes andmebaasidega suhtlemise lihtsamaks

instagram viewer
kirjutada tõhusat, puhast ja hõlpsasti hooldatavat koodi.

Diisel toetab ka mitu andmebaasimootorit, sealhulgas PostgreSQL, MySQL ja SQLiteja pakub tugevat funktsioonide komplekti keerukate andmebaasitoimingute (nt tehingud, liitumised ja koondfunktsioonid) käsitlemiseks.

Võimsate tööriistade, funktsioonide ja suurepärase dokumentatsiooniga Dieselist on saanud valik paljudele Rusti arendajatele, kes soovivad luua tugevaid ja skaleeritavaid andmepõhiseid rakendusi.

Diisliga alustamine

Peate lisama diisel ja dotenv kastidesse oma projekti sõltuvustesse oma sõltuvuste jaotises lasti.toml faili.

[sõltuvused]
diisel = { versioon = "1.4.4", funktsioonid = ["sqlite"] }
dotenv = "0.15.0"

Pärast kastide lisamist sõltuvustena peate installima diesel_cli CLI tööriist diisliga suhtlemiseks.

Käivitage see käsk, et installida diesel_cli tööriist:

lasti paigaldus diesel_cli

Saate helistada CLI tööriistale diisel käsk pärast tööriista installimist.

Järgmisena looge keskkonnamuutujate fail ja määrake oma andmebaasi URL.

Käivitage see käsk, et luua ja sisestada mälusisese SQLite'i andmebaasi andmebaasi URL.

echo DATABASE_URL=database.db > .env

Dieseliga töötamiseks peate arvutisse installima sqlite3 või eelistatud andmebaasi.

Lõpuks käivitage seadistamine käsk Dieselile teie projekti jaoks andmebaasi seadistamiseks:

diisli seadistus

The seadistamine käsk loob a migratsioonid kataloogis, loob kataloogis määratud andmebaasi DATABASE_URLja käitab olemasolevaid migratsioone.

Diisliga migratsioonide seadistamine

Pärast Dieseliga andmebaasi seadistamist kasutate migratsioon genereerida käsk migratsioonifailide genereerimiseks. Lisate argumendina faili nime:

diislikütuse migratsioon genereerida create_humans

Käsk genereerib failis kaks SQL-faili migratsioonid kataloog: up.sql ja alla.sql.

Kirjutate andmebaasi tabeli määratluste jaoks SQL-i up.sql fail:

-- Teie SQL läheb siia

LOOTABEL"inimene"
(
"id" TÄISARV MITTE NULL PRIMARY KEY AUTOINCREMENT,
"first_name" TEXT NOT NULL,
"last_name" TEXT NOT NULL,
"vanus" TÄISARV EI NULL
);

Andmebaasi tabelite eemaldamiseks kirjutate SQL-koodi alla.sql fail:

-- alla.sql

-- See fail peaks failis "up.sql" kõik tagasi võtma
TULLATABEL"inimene"

Pärast SQL-failide kirjutamist käivitage rändejooks käsk ootel migratsioonide rakendamiseks.

diislikütuse migratsioonijooks

Lisaks saate kasutada migratsioon uuesti teha käsk migratsioonide taastamiseks:

diisli migratsioon uuesti teha

Samuti saate kasutada print-skeem käsk skeemi printimiseks. Käsk prindib faili sisu schema.rs faili.

diisel print-skeem

väljund print_schema käsk on Rust-kood, mis vastab teie SQL-skeemile:

Ühenduse loomine oma SQL-i andmebaasiga diisliga

Esmalt lisage oma faili need impordid ja direktiivid:

mod skeem;

#[makro_kasutus]
välinekast diisel;
kasutada dotenv:: dotenv;
kasutada diisel:: prelüüd::*;
kasutada std:: env;
kasutada Diesel::{Connection, ExpressionMethods, QueryDsl, RunQueryDsl, SqliteConnection};
kasutada kast:: skeem:: inimene;

Kasutate importi ja juhiseid andmebaasiga ühenduse loomiseks ja toimingute tegemiseks.

Siit saate teada, kuidas saate funktsiooniga SQLite'i andmebaasiga ühenduse luua ja ühenduse eksemplari tagastada.

kasutada std:: env;
kasutada diisel::{Ühendus, SqliteConnection};

fnühenduse loomine() -> SqliteConnection {
dotenv().ok();

lase andmebaasi_url = env:: var("DATABASE_URL")
.expect("DATABASE_URL peab olema määratud");
SqliteConnection:: luua(&andmebaasi_url)
.unwrap_or_else(|_| paanika!("Viga ühenduse loomisel seadmega {}", andmebaasi_url))
}

The ühenduse loomine funktsioon tagastab ühenduse eksemplari struktuuri (SqliteConnection). The ühenduse loomine laadib keskkonnamuutujad koos Okei funktsiooni abil pääseb andmebaasi URL-ile juurde var funktsiooni ja loob ühenduse andmebaasiga URL-i kaudu kehtestada funktsiooni.

Pärast edukat ühendust saate täita päringuid ja sisestada need oma andmebaasi.

Väärtuste sisestamine diisliga andmebaasi

Väärtuste andmebaasi sisestamiseks kasutate struktuuri, mis sobib teie SQL-skeemiga.

Siin on struktuur, mis sobib inimene tabeli skeem:

#[tuletada (päritav)]
pubistruktuurInimene {
pubi id: i32,
pubi eesnimi: String,
pubi perekonnanimi: String,
pubi vanus: i32,
}

Sisestusfunktsioon tagastab eksemplari Inimene tüüp muude toimingute jaoks.

Teil on vaja sisestusfunktsiooni jaoks struktuuri; struktuur rakendab kahte makroatribuuti, millest üks on sisestamise funktsiooni jaoks ja teine, mis tuvastab toimingu tabeli.

Siin on sisestustoimingu struktuur:

#[tuletada (sisestatav)]
#[tabeli_nimi = "inimene"]
struktuurUus Inimene<'a> {
eesnimi: &'astr,
perekonnanimi: &'astr,
vanus: i32,
}

Teie sisestusfunktsioon võtab vastu ühenduse eksemplari ja andmed, mida soovite andmebaasi sisestada. Sisestage andmed ja printige toimingu oleku põhjal teade.

fninsert_int<'a>(conn: &SqliteConnection, eesnimi: &'astr, perekonnanimi: &'astr, vanus: i32) -> Inimene {
kasutada kast:: skeem:: inimene;

lase new_human = UusInimene {
eesnimi,
perekonnanimi,
vanus,
};

diesel:: insert_into (inimene:: tabel).väärtused(&uus_inimene).execute (conn).expect("Viga uue inimese sisestamisel");

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

The insert_int funktsioon võtab parameetrid sisse ja lisab väärtused andmebaasi koos diisliga insert_int funktsioon, mis võtab sisse tabeli ja väärtused funktsioon, mis võtab struktuurieksemplari. Funktsioon määrab ID kahanevas järjekorras koos desc funktsiooni enne toimingu sooritamist.

Siin on peamine funktsioon, mis kutsub insert_int funktsioon:

fnpeamine() {
lase conn = loo_ühendus();
lase new_human = insert_into(&conn, "John", "Doe", 25);
println!("Sisestatud uus inimene ID-ga: {}", uus_inimene.id);

}

The ühendus muutuja on ühenduse eksemplar ja uus_inimene muutuja on funktsiooni kutse. The peamine funktsioon prindib pärast edukat toimingut ID.

Päringud andmebaasidest diisliga

Teise võimalusena rakendab teie päringufunktsiooni struktuur Küsitav atribuut koos a tuletada makro.

Siin on päringutoimingu struktuur:

// Määratlege struktuur, mis tähistab teie tabeli rida
#[tuletada (päritav)]
struktuurInimene {
id: i32,
eesnimi: String,
perekonnanimi: String,
vanus: i32,
}

Päringufunktsioon võtab ühenduse eksemplari ja tagastab a Inimene struktureerida järgmiselt:

fnpäring_db(conn: &SqliteConnection) -> Human {
human.filter (vanus.eq(25)).first (ühenda).expect("Viga andmebaasi päringu tegemisel")
}

The päring_db funktsioon filtreerib inimese tabeli rea jaoks, kus vanus võrdub 25-ga ja tagastab esimese esinemise struktuurieksemplarina.

fnpeamine() {

lase conn = loo_ühendus();
lase isik = query_db(&conn);

println!("ID: {}", isik.id);
println!("Eesnimi: {}", isik.eesnimi);
println!("Perekonnanimi: {}", isik.perekonnanimi);
println!("Vanus: {}", isik.vanus);
}

Aastal peamine funktsioon, inimene muutuja kutsub päring_db funktsiooni ja prindib rea väljad vanuse väärtusega 25.

Saate ehitada roostega veebiservereid

Rust kogub veebiarenduses jätkuvalt populaarsust serveripoolse keelena, millel on sarnased raamatukogud Actix-web ja Rakett mis hõlbustavad serverite seadistamist ning API-de ja veebisaitide loomist, võttes arvesse keerukaid funktsioone.

Enamik veebiservereid peab andmete salvestamiseks ja otsimiseks suhtlema andmebaasidega. Keerukate veebirakenduste loomiseks saate oma diiselmootoriga rakendusi veelgi integreerida Actix-webi või Rocketiga.