Tässä on opas, joka auttaa sinua pääsemään alkuun SQL-tietokantojen käytössä Rustissa.
Kun rakennat lisää Rust-ohjelmia, saatat joutua olemaan vuorovaikutuksessa tietokantojen kanssa tietojen tallentamista ja hakua varten.
Rustin vahva kirjoitus, muistin turvallisuus ja suorituskyky yhdistettynä sen tukeen asynkronisille toiminnoille, ORM: ille ja migraatiot mahdollistavat tehokkaan ja skaalautuvan tietojenkäsittelyn, joten Rust on erinomainen valinta tietokannan rakentamiseen sovellukset.
Johdatus SQL-tietokantojen käyttöön Rustissa
Rust-ekosysteemissä on monia tietokantalaatikoita ja kirjastoja, jotka tukevat erilaisia tietokantaparadigmoja.
SQL-tietokantoja varten voit valita tietokantaohjainten, kuten esim Libpq, Mysql-liitin, ja Sqlite3 jotka tarjoavat käyttöliittymän Rust-ohjelmille vuorovaikutuksessa tietokantojen kanssa suoraan ilman abstraktiokerrosta SQL: ssä ja ORM: issa (Object-Relational Mappers), kuten diesel-, sqlx, ja Ruoste-postgres jotka tarjoavat kätevän tavan työskennellä tietokannan kanssa Ruostetietotyypit kuten rakenteet ja funktiot.
Diesel ORM on yksi Rust-ekosysteemin suosituimmista tietokantapaketeista. ORM: na Diesel tarjoaa ominaisuuksia kyselyn rakentamisesta ja suorittamisesta mallien määrittelyyn ja tietokantaskeeman siirtoihin, mikä helpottaa tietokantojen ja tietokantojen käyttöä. kirjoittaa tehokasta, puhdasta ja helposti ylläpidettävää koodia.
Diesel myös tukee useita tietokantamoottoreita, mukaan lukien PostgreSQL, MySQL ja SQLite, ja tarjoaa vankan joukon ominaisuuksia monimutkaisten tietokantatoimintojen, kuten tapahtumien, liitosten ja aggregaattitoimintojen, käsittelemiseen.
Tehokkaiden työkalujen, ominaisuuksien ja erinomaisen dokumentaation ansiosta Dieselistä on tullut suosittu valinta monille Rust-kehittäjille, jotka haluavat rakentaa kestäviä ja skaalautuvia tietopohjaisia sovelluksia.
Dieselin käytön aloittaminen
Sinun on lisättävä diesel ja dotenv laatikoita projektisi riippuvuuksiin riippuvuudet-osiossa cargo.toml tiedosto.
[riippuvuudet]
diesel = { versio = "1.4.4", ominaisuuksia = ["sqlite"] }
dotenv = "0.15.0"
Kun olet lisännyt laatikot riippuvuuksiksi, sinun on asennettava diesel_cli CLI-työkalu vuorovaikutukseen Dieselin kanssa.
Suorita tämä komento asentaaksesi diesel_cli työkalu:
lastin asennus diesel_cli
Voit kutsua CLI-työkalua käyttämällä diesel komento työkalun asennuksen jälkeen.
Luo seuraavaksi ympäristömuuttujatiedosto ja määritä tietokannan URL-osoite.
Suorita tämä komento luodaksesi ja lisätäksesi tietokannan URL-osoitteen muistissa olevaa SQLite-tietokantaa varten.
echo DATABASE_URL=tietokanta.db > .env
Jotta voit työskennellä Dieselin kanssa, sinun on asennettava tietokoneellesi sqlite3 tai haluamasi tietokanta.
Suorita lopuksi perustaa Dieselin komento perustaa tietokanta projektillesi:
dieselin asetukset
The perustaa komento luo a muuttoliikkeet hakemistoon, luo kohdassa määritellyn tietokannan DATABASE_URL, ja suorittaa olemassa olevia siirtoja.
Siirtojen määrittäminen dieselillä
Kun olet määrittänyt tietokanta Dieselin kanssa, käytät migraatio tuottaa komento siirtotiedostojen luomiseen. Lisäät tiedoston nimen argumentiksi:
dieselin migraatio tuottaa create_humans
Komento luo kaksi SQL-tiedostoa muuttoliikkeet hakemisto: up.sql ja alas.sql.
Kirjoitat SQL: n tietokantataulukkomääritelmillesi up.sql tiedosto:
-- SQL menee tänne
LUODAPÖYTÄ"ihmisen"
(
"id" INTEGER NOT NULL PRIMARY KEY AUTOMATION INNCREMENT,
"first_name" TEXT NOT NULL,
"last_name" TEXT NOT NULL,
"ikä" INTEGER EI NULL
);
Kirjoitat SQL-koodin tietokantataulukoiden pudottamiseksi alas.sql tiedosto:
-- alas.sql
-- Tämän tiedoston pitäisi kumota kaikki tiedostossa "up.sql".
PUDOTAPÖYTÄ"ihmisen"
Kun olet kirjoittanut SQL-tiedostot, suorita siirtoajo -komento ottaa käyttöön odottavat siirrot.
dieselin siirtymäajo
Lisäksi voit käyttää muutto uudelleen komento siirtojen palauttamiseksi:
diesel migration redo
Voit myös käyttää print-skeema komento tulostaa skeeman. Komento tulostaa komennon sisällön schema.rs tiedosto.
diesel print-schema
Tuotos print_schema komento on Rust-koodi, joka vastaa SQL-skeemaasi:
Yhdistäminen SQL-tietokantaan Dieselin avulla
Lisää ensin nämä tuonnit ja ohjeet tiedostoosi:
mod skeema;
#[macro_use]
ulkoinenlaatikko diesel;
käyttää dotenv:: dotenv;
käyttää diesel:: alkusoitto::*;
käyttää std:: env;
käyttää Diesel::{Connection, ExpressionMethods, QueryDsl, RunQueryDsl, SqliteConnection};
käyttää laatikko:: skeema:: ihminen;
Käytät tuontia ja ohjeita muodostaaksesi yhteyden tietokantaasi ja suorittaaksesi toimintoja.
Näin voit muodostaa yhteyden SQLite-tietokantaan funktiolla ja palauttaa yhteysesiintymän:
käyttää std:: env;
käyttää diesel::{Connection, SqliteConnection};fnmuodosta_yhteys() -> SqliteConnection {
dotenv().ok();
antaa tietokannan_url = env:: var("DATABASE_URL")
.odottaa("DATABASE_URL on määritettävä");
SqliteConnection:: perustaa(&tietokannan_url)
.unwrap_or_else(|_| paniikki!("Virhe muodostettaessa yhteyttä kohteeseen {}", tietokannan_url))
}
The muodosta_yhteys funktio palauttaa yhteysesiintymän rakenteen (SqliteConnection). The muodosta_yhteys lataa ympäristömuuttujat kanssa okei toiminto, käyttää tietokannan URL-osoitetta var -toiminto ja muodostaa yhteyden tietokantaan URL-osoitteen kautta perustaa toiminto.
Onnistuneen yhteyden muodostamisen jälkeen voit suorittaa kyselyitä ja lisätä ne tietokantaasi.
Arvojen lisääminen tietokantaan dieselillä
Käytät SQL-skeemaasi vastaavaa rakennetta arvojen lisäämiseen tietokantaasi.
Tässä on rakenne, joka vastaa ihmisen taulukkokaavio:
#[johdella (kyselyssä)]
pubstructIhmisen {
pub id: i32,
pub etunimi: merkkijono,
pub sukunimi: merkkijono,
pub ikä: i32,
}
Lisäystoiminto palauttaa esiintymän Ihmisen tyyppi muita toimintoja varten.
Tarvitset lisäystoimintoa varten rakenteen; rakenne toteuttaa kaksi makroattribuuttia, yhden lisäystoiminnalle ja toisen, joka identifioi toiminnon taulukon.
Tässä on lisäystoiminnon rakenne:
#[johdat (lisättävä)]
#[taulukon_nimi = "ihmisen"]
structUusiHuman<'a> {
etunimi: &'astr,
sukunimi: &'astr,
ikä: i32,
}
Lisäystoiminto ottaa yhteysesiintymän ja tiedot, jotka haluat lisätä tietokantaan. Syötä tiedot ja tulosta viesti toiminnon tilan perusteella.
fnlaittaa sisään<'a>(conn: &SqliteConnection, etunimi: &'astr, sukunimi: &'astr, ikä: i32) -> ihminen {
käyttää laatikko:: skeema:: ihminen;antaa new_human = UusiHuman {
etunimi,
sukunimi,
ikä,
};diesel:: insert_into (ihminen:: taulukko).arvot(&uusi_ihminen).execute (conn).expect("Virhe lisättäessä uutta ihmistä");
human:: table.order (ihminen:: id.desc()).first (conn).unwrap()
}
The laittaa sisään toiminto ottaa parametrit sisään ja lisää arvot tietokantaan Dieselin avulla laittaa sisään funktio, joka ottaa taulukon ja arvot funktio, joka ottaa rakenteen ilmentymän. Toiminto määrittää tunnuksen alenevassa järjestyksessä kanssa desc toiminto ennen toiminnon suorittamista.
Tässä on pää toiminto, joka kutsuu laittaa sisään toiminto:
fnpää() {
antaa conn = muodosta_yhteys();
antaa new_human = insert_into(&conn, "John", "Doe", 25);
println!("Uusi ihminen lisätty ID: llä: {}", uusi_ihminen.id);
}
The yhteys muuttuja on yhteysinstanssi ja uusi_ihminen muuttuja on funktiokutsu. The pää toiminto tulostaa tunnuksen onnistuneen toiminnon jälkeen.
Tietokantojen kysely Dieselillä
Vaihtoehtoisesti kyselyfunktiorakenne toteuttaa Kysyttävä attribuutti a johtaa makro.
Tässä on kyselytoiminnon rakenne:
// Määritä rakenne, joka edustaa taulukon riviä
#[johdella (kyselyssä)]
structIhmisen {
id: i32,
etunimi: merkkijono,
sukunimi: merkkijono,
ikä: i32,
}
Kyselytoiminto ottaa yhteysesiintymän ja palauttaa a Ihmisen rakenna seuraavasti:
fnkysely_db(yhteys: &SqliteConnection) -> Ihmisen {
human.filter (age.eq(25)).ensin (yhd.). odottaa("Virhe haettaessa tietokantaa")
}
The kysely_db funktio suodattaa ihmistaulukon sille riville, jolla ikä on yhtä suuri kuin 25 ja palauttaa ensimmäisen esiintymän rakenneinstanssina.
fnpää() {
antaa conn = muodosta_yhteys();
antaa henkilö = kysely_db(&conn);
println!("ID: {}", henkilö.id);
println!("Etunimi: {}", henkilö.etunimi);
println!("Sukunimi: {}", henkilö.sukunimi);
println!("Ikä: {}", henkilö.ikä);
}
Vuonna pää toiminto, henkilö muuttuja kutsuu kysely_db funktio ja tulostaa sen rivin kentät, jonka ikäarvo on 25.
Voit rakentaa verkkopalvelimia ruosteen avulla
Rust jatkaa suosiotaan web-kehityksessä palvelinpuolen kielenä, jossa on mm. kirjastoja Actix-web ja Raketti jotka helpottavat palvelimien määrittämistä ja API: iden ja verkkosivustojen rakentamista poistamalla monimutkaisista toiminnoista.
Useimpien verkkopalvelimien on oltava vuorovaikutuksessa tietokantojen kanssa tietojen tallentamista ja hakua varten. Voit edelleen integroida dieselkäyttöisiä sovelluksiasi Actix-webin tai Rocketin kanssa kehittääksesi kehittyneitä verkkosovelluksia.