Štai vadovas, padėsiantis pradėti naudoti SQL duomenų bazes „Rust“.

Kai kuriate daugiau Rust programų, gali tekti bendrauti su duomenų bazėmis, kad galėtumėte saugoti ir gauti duomenis.

Stiprus „Rust“ spausdinimas, atminties sauga ir našumas kartu su asinchroninių operacijų, ORM ir migracijos, įgalina efektyvų ir keičiamo dydžio duomenų apdorojimą, todėl Rust yra puikus pasirinkimas kuriant duomenų bazę programos.

Įvadas į SQL duomenų bazių naudojimą Rust

Rust ekosistemoje yra daug duomenų bazių dėžių ir bibliotekų, kurios palaiko įvairias duomenų bazių paradigmas.

SQL duomenų bazėms galite rinktis iš tokių duomenų bazių tvarkyklių kaip Libpq, Mysql jungtis, ir Sqlite3 kurios suteikia sąsają Rust programoms tiesiogiai sąveikauti su duomenų bazėmis be jokio abstrakcijos sluoksnio SQL ir ORM (Object-Relational Mappers), pvz. Dyzelinas, sqlx, ir Rūdys-postgres kurie suteikia patogų būdą dirbti su duomenų baze Rūdžių duomenų tipai pavyzdžiui, struktūros ir funkcijos.

Diesel ORM yra vienas populiariausių duomenų bazių paketų Rust ekosistemoje. Kaip ORM, Diesel siūlo funkcijas nuo užklausų kūrimo ir vykdymo iki modelio apibrėžimo ir duomenų bazės schemų perkėlimo, todėl jums lengviau bendrauti su duomenų bazėmis ir

instagram viewer
rašyti efektyvų, švarų ir lengvai prižiūrimą kodą.

Dyzelinas taip pat palaiko keli duomenų bazės varikliai, įskaitant PostgreSQL, MySQL ir SQLite, ir suteikia tvirtą funkcijų rinkinį, skirtą sudėtingoms duomenų bazės operacijoms, pvz., operacijoms, sujungimams ir agregacinėms funkcijoms, tvarkyti.

Su galingais įrankiais, funkcijomis ir puikia dokumentacija Diesel tapo pasirinkimu daugeliui Rust kūrėjų, norinčių sukurti patikimas ir keičiamo dydžio duomenimis pagrįstas programas.

Darbo su dyzelinu pradžia

Turėsite pridėti dyzelinas ir dotenv dėžutes prie projekto priklausomybių savo priklausomybių skiltyje krovinys.toml failą.

[priklausomybės]
dyzelinas = { versija = "1.4.4", funkcijos = ["sqlite"] }
dotenv = "0.15.0"

Pridėję dėžes kaip priklausomybes, turite įdiegti diesel_cli CLI įrankis sąveikauti su dyzelinu.

Vykdykite šią komandą, kad įdiegtumėte diesel_cli įrankis:

krovinių montavimas diesel_cli

Galite iškviesti CLI įrankį naudodami dyzelinas komandą įdiegę įrankį.

Tada sukurkite aplinkos kintamųjų failą ir nurodykite duomenų bazės URL.

Vykdykite šią komandą, kad sukurtumėte ir įterptumėte duomenų bazės URL SQLite duomenų bazei atmintyje.

echo DATABASE_URL=duomenų bazė.db > .env

Norėdami dirbti su Diesel, savo kompiuteryje turite įdiegti sqlite3 arba pageidaujamą duomenų bazę.

Galiausiai paleiskite sąranka komanda Diesel, kad nustatytų jūsų projekto duomenų bazę:

dyzelino sąranka

The sąranka komanda sukuria a migracijos kataloge, sukuria duomenų bazę, nurodytą DATABASE_URL, ir vykdo esamus perkėlimus.

Migracijos nustatymas naudojant dyzeliną

Sukūrę duomenų bazę naudodami Diesel, naudosite generuoti migraciją komanda perkėlimo failams generuoti. Kaip argumentą pridėsite failo pavadinimą:

dyzelino migracija generuoja create_humans

Komanda generuoja du SQL failus migracijos katalogas: up.sql ir žemyn.sql.

Savo duomenų bazės lentelės apibrėžimams rašysite SQL up.sql failas:

– Jūsų SQL yra čia

KURTILENTELĖ"žmogus"
(
„id“ SVEIKINIS SKAIČIUS NE NULIS PIRMINIO RAKTŲ AUTOMATINIS PADĖJIMAS,
"first_name" TEXT NOT NULL,
"pavardė" TEXT NOT NULL,
"amžiaus" SVEIKI SKAIČIUS NE NULIS
);

Rašysite SQL kodą, kad išmestumėte duomenų bazės lenteles žemyn.sql failas:

-- žemyn.sql

-- Šis failas turėtų anuliuoti bet ką, esantį „up.sql“.
NULEISTILENTELĖ"žmogus"

Įrašę SQL failus, paleiskite migracijos bėgimas komanda, skirta taikyti laukiančius perkėlimus.

dyzelino migracijos važiavimas

Be to, galite naudoti migracijos perdarymas komanda grąžinti perkėlimą:

dyzelino migracija perdaryti

Be to, galite naudoti spausdinimo schema komanda spausdinti schemą. Komanda išspausdina turinį schema.rs failą.

dyzelinio spausdinimo schema

Išvestis print_schema komanda yra Rust kodas, atitinkantis jūsų SQL schemą:

Prisijungimas prie SQL duomenų bazės naudojant dyzeliną

Pirmiausia prie failo pridėkite šiuos importus ir direktyvas:

mod schema;

#[makro_naudojimas]
išorinisdėžė dyzelinas;
naudoti dotenv:: dotenv;
naudoti dyzelinas:: preliudas::*;
naudoti std:: env;
naudoti Diesel::{Connection, ExpressionMethods, QueryDsl, RunQueryDsl, SqliteConnection};
naudoti dėžė:: schema:: žmogus;

Norėdami prisijungti prie duomenų bazės ir atlikti operacijas, naudosite importus ir direktyvas.

Štai kaip galite prisijungti prie SQLite duomenų bazės naudodami funkciją ir grąžinti ryšio egzempliorių:

naudoti std:: env;
naudoti dyzelinas::{Jungtis, SqliteConnection};

fnužmegzti_ryšį() -> SqliteConnection {
dotenv().ok();

leisti duomenų bazės_url = env:: var(„DATABASE_URL“)
.expect(„Turi būti nustatytas DATABASE_URL“);
SqliteConnection:: sukurti(&duomenų bazės_url)
.unwrap_or_else(|_| panika!(„Klaida jungiantis prie {}“, duomenų bazės_url))
}

The užmegzti_ryšį funkcija grąžina ryšio egzemplioriaus struktūrą (SqliteConnection). The užmegzti_ryšį įkelia aplinkos kintamuosius su Gerai funkcija, pasiekia duomenų bazės URL su var funkcija ir užmezga ryšį su duomenų baze per URL su nustatyti funkcija.

Po sėkmingo prisijungimo galite vykdyti užklausas ir įterpti jas į savo duomenų bazę.

Vertybių įterpimas į duomenų bazę naudojant dyzeliną

Norėdami įterpti reikšmes į duomenų bazę, naudosite struktūrą, atitinkančią jūsų SQL schemą.

Štai struktūra, atitinkanti žmogus lentelės schema:

#[išvesti (užklausa)]
pubstruktūraŽmogus {
pub ID: i32,
pub Pirmas vardas: Styga,
pub pavardė: Styga,
pub amžius: i32,
}

Įterpimo funkcija grąžins egzempliorių Žmogus tipas kitoms operacijoms.

Jums reikės įterpimo funkcijos struktūros; struktūra įgyvendins du makrokomandos atributus, vieną skirtą įterpimo funkcijai, o kitą, identifikuojantį operacijos lentelę.

Štai įterpimo operacijos struktūra:

#[išvesti (įterpiama)]
#[lentelės_pavadinimas = "žmogus"]
struktūraNaujasis Žmogus<'a> {
Pirmas vardas: &'ag,
pavardė: &'ag,
amžius: i32,
}

Jūsų įterpimo funkcija paims ryšio egzempliorių ir duomenis, kuriuos norite įterpti į duomenų bazę. Įveskite duomenis ir atspausdinkite pranešimą pagal operacijos būseną.

fnįterpti_į<'a>(Conn: &SqliteConnection, first_name: &'ag, pavardė: &'ag, amžius: i32) -> Žmogus {
naudoti dėžė:: schema:: žmogus;

leisti new_human = NewHuman {
Pirmas vardas,
pavardė,
amžius,
};

dyzelis:: įterpti_į (žmogus:: lentelę).reikšmės(&naujas_žmogus).vykdyti (jungtis).expect(„Klaida įterpiant naują žmogų“);

žmogus:: lentelė.tvarka (žmogus:: id.desc()).first (conn).unwrap()
}

The įterpti_į funkcija paima parametrus ir įterpia reikšmes į duomenų bazę su Diesel's įterpti_į funkcija, kuri užima lentelę ir vertybes funkcija, kuri paima struktūros egzempliorių. Funkcija priskiria ID mažėjimo tvarka su aprašas funkciją prieš atlikdami operaciją.

Štai pagrindinis funkcija, kuri iškviečia įterpti_į funkcija:

fnpagrindinis() {
leisti conn = sukurti_ryšį();
leisti new_human = insert_into(&conn, "Jonas", "Eiras", 25);
println!(„Įterptas naujas žmogus su ID: {}“, naujas_žmogus.id);

}

The conn kintamasis yra ryšio pavyzdys ir naujas_žmogus kintamasis yra funkcijos iškvietimas. The pagrindinis funkcija išspausdina ID po sėkmingos operacijos.

Duomenų bazių užklausa naudojant Diesel

Arba jūsų užklausos funkcijos struktūra įgyvendins Galima užklausti atributas su a išvesti makrokomandą.

Štai užklausos operacijos struktūra:

// Apibrėžkite struktūrą, kuri reiškia jūsų lentelės eilutę
#[išvesti (užklausa)]
struktūraŽmogus {
ID: i32,
Pirmas vardas: Styga,
pavardė: Styga,
amžius: i32,
}

Užklausos funkcija paims ryšio egzempliorių ir grąžins a Žmogus sudaryti taip:

fnquery_db(Conn: &SqliteConnection) -> Žmogus {
human.filter (age.eq(25)).pirma (prisijungti).tiktis(„Klaida ieškant duomenų bazės“)
}

The query_db funkcija filtruoja žmonių lentelę pagal eilutę, kurioje amžiaus lygus 25 ir grąžina pirmąjį įvykį kaip struktūros egzempliorių.

fnpagrindinis() {

leisti conn = sukurti_ryšį();
leisti asmuo = query_db(&conn);

println!("ID: {}", asmuo.id);
println!("Pirmas vardas: {}", asmuo.vardas);
println!("Pavardė: {}", asmuo.pavardė);
println!("Amžius: {}", asmuo.amžius);
}

Viduje pagrindinis funkcija, asmuo kintamasis vadina query_db funkciją ir atspausdina eilutės laukus, kurių amžiaus reikšmė lygi 25.

Galite sukurti interneto serverius su rūdimis

Rust ir toliau populiarėja kuriant žiniatinklius kaip serverio kalba su tokiomis bibliotekomis kaip Actix-web ir Raketa kurios palengvina serverių nustatymą ir API bei svetainių kūrimą, nes abstrahuojasi sudėtingos funkcijos.

Dauguma žiniatinklio serverių turi sąveikauti su duomenų bazėmis duomenims saugoti ir gauti. Galite toliau integruoti savo dyzelinu varomas programas su Actix-web arba Rocket, kad sukurtumėte sudėtingas žiniatinklio programas.