Šis ir ceļvedis, kas palīdzēs sākt lietot SQL datu bāzes Rust.

Veidojot vairāk Rust programmu, iespējams, vajadzēs mijiedarboties ar datu bāzēm datu glabāšanai un izguvei.

Rust spēcīgā mašīnrakstīšana, atmiņas drošība un veiktspēja apvienojumā ar atbalstu asinhronām operācijām, ORM un migrācijas, nodrošina efektīvu un mērogojamu datu apstrādi, padarot Rust par lielisku izvēli datu bāzes veidošanai lietojumprogrammas.

Ievads SQL datu bāzu izmantošanā Rust

Rust ekosistēmā ir daudz datu bāzu kastu un bibliotēku, kas nodrošina atbalstu dažādām datu bāzes paradigmām.

SQL datu bāzēm varat izvēlēties starp datu bāzes draiveriem, piemēram Libpq, Mysql savienotājs, un Sqlite3 kas nodrošina saskarni Rust programmām, lai tieši mijiedarbotos ar datu bāzēm bez abstrakcijas slāņa SQL un ORM (Object-Relational Mappers), piemēram, Dīzelis, Sqlx, un Rūsa-postgres kas nodrošina ērtu veidu, kā strādāt ar datubāzi Rūsas datu veidi piemēram, struktūras un funkcijas.

Diesel ORM ir viena no populārākajām datu bāzu pakotnēm Rust ekosistēmā. Kā ORM, Diesel nodrošina funkcijas, sākot no vaicājumu veidošanas un izpildes līdz modeļu definēšanai un datu bāzes shēmu migrācijai, atvieglojot mijiedarbību ar datu bāzēm un

instagram viewer
rakstīt efektīvu, tīru un viegli uzturējamu kodu.

Dīzelis arī atbalsta vairāki datu bāzes dzinēji, tostarp PostgreSQL, MySQL un SQLite, un nodrošina spēcīgu līdzekļu kopumu tādu sarežģītu datu bāzes darbību kā transakcijas, pievienošanās un apkopošanas funkcijas.

Pateicoties jaudīgiem rīkiem, funkcijām un izcilai dokumentācijai, Diesel ir kļuvusi par populāru izvēli daudziem Rust izstrādātājiem, kuri vēlas izveidot stabilas un mērogojamas uz datiem balstītas lietojumprogrammas.

Darba sākšana ar dīzeļdegvielu

Jums būs jāpievieno dīzeļdegviela un dotenv kastes uz jūsu projekta atkarībām jūsu atkarību sadaļā kravas.toml failu.

[atkarības]
dīzeļdegviela = { versija = "1.4.4", funkcijas = ["sqlite"] }
dotenv = "0.15.0"

Pēc kastu pievienošanas kā atkarības, jums ir jāinstalē diesel_cli CLI rīks mijiedarbībai ar dīzeļdegvielu.

Palaidiet šo komandu, lai instalētu diesel_cli rīks:

kravas uzstādīt diesel_cli

Varat izsaukt CLI rīku, izmantojot dīzeļdegviela komandu pēc rīka instalēšanas.

Pēc tam izveidojiet vides mainīgo failu un norādiet datu bāzes URL.

Palaidiet šo komandu, lai izveidotu un ievietotu datu bāzes URL atmiņā esošai SQLite datu bāzei.

echo DATABASE_URL=datubāze.db > .env

Lai strādātu ar Diesel, datorā jāinstalē sqlite3 vai vēlamā datu bāze.

Visbeidzot palaidiet uzstādīt komanda Diesel, lai iestatītu jūsu projekta datu bāzi:

dīzeļa iestatīšana

The uzstādīt komanda izveido a migrācijas direktorijā, izveido datu bāzi, kas norādīta DATABASE_URL, un veic esošās migrācijas.

Migrācijas iestatīšana ar dīzeļdegvielu

Pēc datu bāzes iestatīšanas ar Diesel jūs izmantosit radīt migrāciju komanda, lai ģenerētu migrācijas failus. Jūs pievienosit faila nosaukumu kā argumentu:

dīzeļdegvielas migrācija rada create_humans

Komanda ģenerē divus SQL failus migrācijas direktorijs: up.sql un uz leju.sql.

Jūs ierakstīsit SQL datu bāzes tabulu definīcijām up.sql fails:

-- Jūsu SQL iet šeit

IZVEIDOTTABULA"cilvēks"
(
"id" VESELS SKAITS NAV NULL PRIMĀRĀS ATSLĒGAS AUTOMĀTISKAIS PAPILDINĀJUMS,
"first_name" TEKSTS NOT NULL,
"last_name" TEKSTS NOT NULL,
"vecums" INTEGER NOT NULL
);

Jūs ierakstīsit SQL kodu, lai izmestu datu bāzes tabulas uz leju.sql fails:

-- uz leju.sql

-- Šim failam ir jāatsauc jebkas failā “up.sql”.
NOLIETOTTABULA"cilvēks"

Pēc SQL failu rakstīšanas palaidiet migrācijas skrējiens komanda, lai lietotu neapstiprinātās migrācijas.

dīzeļdegvielas migrācijas skrējiens

Turklāt jūs varat izmantot migrācijas pārtaisīšana komanda migrācijas atjaunošanai:

dīzeļa migrācijas pārtaisīt

Varat arī izmantot drukas shēma komandu, lai izdrukātu shēmu. Komanda izdrukā saturu schema.rs failu.

dīzeļa drukas shēma

Izvade no drukas_shēma komanda ir Rust kods, kas atbilst jūsu SQL shēmai:

Savienojuma izveide ar jūsu SQL datu bāzi, izmantojot dīzeļdegvielu

Vispirms pievienojiet failam šīs importēšanas un direktīvas:

mod shēma;

#[macro_use]
ārējaiskaste dīzeļdegviela;
izmantot dotenv:: dotenv;
izmantot dīzelis:: prelūdija::*;
izmantot std:: env;
izmantot Diesel::{Savienojums, ExpressionMethods, QueryDsl, RunQueryDsl, SqliteConnection};
izmantot crate:: shēma:: cilvēks;

Jūs izmantosiet importēšanu un direktīvas, lai izveidotu savienojumu ar datu bāzi un veiktu darbības.

Lūk, kā varat izveidot savienojumu ar SQLite datu bāzi ar funkciju un atgriezt savienojuma gadījumu:

izmantot std:: env;
izmantot dīzelis::{Savienojums, SqliteConnection};

fnizveidot_savienojumu() -> SqliteConnection {
dotenv().ok();

ļaut datu bāzes_url = env:: var("DATABASE_URL")
.expect("Ir jāiestata DATABASE_URL");
SqliteConnection:: izveidot(&datubāzes_url)
.unwrap_or_else(|_| panika!("Kļūda, veidojot savienojumu ar {}", datu bāzes_url))
}

The izveidot_savienojumu funkcija atgriež savienojuma instances struktūru (SqliteConnection). The izveidot_savienojumu ielādē vides mainīgos ar labi funkcija, piekļūst datu bāzes URL ar var funkciju un izveido savienojumu ar datu bāzi, izmantojot URL ar izveidot funkciju.

Pēc veiksmīga savienojuma varat izpildīt vaicājumus un ievietot tos savā datu bāzē.

Vērtību ievietošana datu bāzē ar dīzeļdegvielu

Lai datubāzē ievietotu vērtības, izmantojiet struktūru, kas atbilst jūsu SQL shēmai.

Šeit ir struktūra, kas atbilst cilvēks tabulas shēma:

#[atvasināt (pieprasāms)]
krogsstruktūraCilvēks {
krogs id: i32,
krogs vārds: Stīga,
krogs uzvārds: Stīga,
krogs vecums: i32,
}

Ievietošanas funkcija atgriezīs gadījuma gadījumu Cilvēks veids citām darbībām.

Ievietošanas funkcijai būs nepieciešama struktūra; struktūra ieviesīs divus makro atribūtus, vienu ievietošanas funkcionalitātei un otru, kas identificē operācijas tabulu.

Šeit ir ievietošanas darbības struktūra:

#[atvasināt (ievietojama)]
#[tabulas_nosaukums = "cilvēks"]
struktūraJaunscilvēks<'a> {
vārds: &'astr,
uzvārds: &'astr,
vecums: i32,
}

Jūsu ievietošanas funkcija uzņems savienojuma gadījumu un datus, ko vēlaties ievietot datu bāzē. Ievietojiet datus un izdrukājiet ziņojumu, pamatojoties uz darbības statusu.

fnievietot_ievadīt<'a>(conn: &SqliteConnection, first_name: &'astr, uzvārds: &'astr, vecums: i32) -> Cilvēks {
izmantot crate:: shēma:: cilvēks;

ļaut new_human = NewHuman {
vārds,
uzvārds,
vecums,
};

diesel:: insert_into (cilvēks:: tabula).vērtības(&jaunais_cilvēks).execute (savien.).expect("Kļūda, ievietojot jaunu cilvēku");

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

The ievietot_ievadīt funkcija uzņem parametrus un ievieto vērtības datu bāzē, izmantojot Diesel's ievietot_ievadīt funkcija, kas uzņem tabulu un vērtības funkcija, kas aizņem struktūras gadījumu. Funkcija piešķir ID dilstošā secībā ar desc funkciju pirms operācijas izpildes.

Lūk, galvenais funkcija, kas izsauc ievietot_ievadīt funkcija:

fngalvenais() {
ļaut conn = izveidot_savienojumu();
ļaut new_human = insert_into(&conn, "Džons", "Dirzīte", 25);
println!("Ievietots jauns cilvēks ar ID: {}", jauns_cilvēks.id);

}

The savienojums mainīgais ir savienojuma gadījums un jauns_cilvēks mainīgais ir funkcijas izsaukums. The galvenais funkcija izdrukā ID pēc veiksmīgas darbības.

Datubāzu vaicājumi ar dīzeļdegvielu

Alternatīvi, jūsu vaicājuma funkcijas struktūra ieviesīs Pieprasāms atribūts ar a iegūt makro.

Šeit ir vaicājuma darbības struktūra:

// Definējiet struktūru, kas apzīmē rindu jūsu tabulā
#[atvasināt (pieprasāms)]
struktūraCilvēks {
id: i32,
vārds: Stīga,
uzvārds: Stīga,
vecums: i32,
}

Vaicājuma funkcija uzņems savienojuma gadījumu un atgriezīs a Cilvēks strukturēt šādi:

fnvaicājuma_db(savien.: &SqliteConnection) -> Cilvēks {
human.filter (age.eq(25)).first (savien.).gaidīt("Kļūda, vaicājot datu bāzē")
}

The vaicājuma_db funkcija filtrē cilvēku tabulu rindai, kurā vecums ir vienāds ar 25 un atgriež pirmo gadījumu kā struktūras gadījumu.

fngalvenais() {

ļaut conn = izveidot_savienojumu();
ļaut persona = query_db(&conn);

println!("ID: {}", person.id);
println!("Vārds: {}", persona.vārds);
println!("Uzvārds: {}", persona.uzvārds);
println!("Vecums: {}", persona.vecums);
}

Iekš galvenais funkcija, persona mainīgais izsauc vaicājuma_db funkciju un izdrukā rindas laukus ar vecuma vērtību, kas vienāda ar 25.

Jūs varat izveidot tīmekļa serverus ar rūsu

Rust turpina iegūt popularitāti tīmekļa izstrādē kā servera puses valoda ar tādām bibliotēkām kā Actix-web un Raķete kas atvieglo serveru iestatīšanu un API un vietņu izveidi, abstrahējot sarežģītas funkcionalitātes.

Lielākajai daļai tīmekļa serveru ir jāsadarbojas ar datu bāzēm datu glabāšanai un izguvei. Varat vēl vairāk integrēt savas ar dīzeļdegvielu darbināmās lietotnes ar Actix-web vai Rocket, lai izveidotu sarežģītas tīmekļa lietojumprogrammas.