Ακολουθεί ένας οδηγός που θα σας βοηθήσει να ξεκινήσετε με τη χρήση βάσεων δεδομένων SQL στο Rust.

Καθώς δημιουργείτε περισσότερα προγράμματα Rust, ίσως χρειαστεί να αλληλεπιδράσετε με βάσεις δεδομένων για αποθήκευση και ανάκτηση δεδομένων.

Η ισχυρή πληκτρολόγηση, η ασφάλεια της μνήμης και η απόδοση του Rust, σε συνδυασμό με την υποστήριξή του για ασύγχρονες λειτουργίες, ORM και μεταναστεύσεις, επιτρέπουν την αποτελεσματική και επεκτάσιμη επεξεργασία δεδομένων, καθιστώντας το Rust μια εξαιρετική επιλογή για τη δημιουργία βάσης δεδομένων εφαρμογές.

Εισαγωγή στη χρήση βάσεων δεδομένων SQL στο Rust

Υπάρχουν πολλά κιβώτια βάσης δεδομένων και βιβλιοθήκες στο οικοσύστημα Rust που παρέχουν υποστήριξη για τα διάφορα παραδείγματα βάσεων δεδομένων.

Για βάσεις δεδομένων SQL, μπορείτε να επιλέξετε μεταξύ προγραμμάτων οδήγησης βάσης δεδομένων όπως Libpq, Υποδοχή Mysql, και Sqlite3 που παρέχουν μια διεπαφή για τα προγράμματα Rust για να αλληλεπιδρούν απευθείας με τις βάσεις δεδομένων χωρίς κανένα επίπεδο αφαίρεσης στο SQL και τα ORM (Αντικειμενικά-Σσχεσιακά Mappers), όπως

instagram viewer
Ντίζελ, Sqlx, και Rust-postgres που παρέχουν έναν βολικό τρόπο εργασίας με τη βάση δεδομένων Τύποι δεδομένων σκουριάς όπως δομές και συναρτήσεις.

Το Diesel ORM είναι ένα από τα πιο δημοφιλή πακέτα βάσεων δεδομένων στο οικοσύστημα Rust. Ως ORM, το Diesel παρέχει λειτουργίες από τη δημιουργία και εκτέλεση ερωτημάτων έως τον ορισμό μοντέλου και τις μετεγκαταστάσεις σχημάτων βάσης δεδομένων, διευκολύνοντας την αλληλεπίδραση με βάσεις δεδομένων και γράψτε αποτελεσματικό, καθαρό και εύκολο στη συντήρηση κώδικα.

Υποστηρίζει και ντίζελ πολλαπλές μηχανές βάσης δεδομένων, συμπεριλαμβανομένων των PostgreSQL, MySQL και SQLite, και παρέχει ένα ισχυρό σύνολο δυνατοτήτων για το χειρισμό πολύπλοκων λειτουργιών βάσης δεδομένων, όπως συναλλαγές, ενώσεις και συναρτήσεις συγκεντρωτικών στοιχείων.

Με πανίσχυρα εργαλεία, δυνατότητες και εξαιρετική τεκμηρίωση, το Diesel έχει γίνει η ιδανική επιλογή για πολλούς προγραμματιστές της Rust που θέλουν να δημιουργήσουν ισχυρές και επεκτάσιμες εφαρμογές που βασίζονται σε δεδομένα.

Ξεκινώντας με το Diesel

Θα πρέπει να προσθέσετε το ντίζελ και dotenv κιβώτια στις εξαρτήσεις του έργου σας στην ενότητα εξαρτήσεων του σας φορτίο.toml αρχείο.

[εξαρτήσεις]
ντίζελ = { έκδοση = "1.4.4", χαρακτηριστικά = ["sqlite"] }
dotenv = "0.15.0"

Αφού προσθέσετε τα κιβώτια ως εξαρτήσεις, πρέπει να εγκαταστήσετε το diesel_cli Εργαλείο CLI για αλληλεπίδραση με το Diesel.

Εκτελέστε αυτήν την εντολή για να εγκαταστήσετε το diesel_cli εργαλείο:

φορτίο εγκατάσταση diesel_cli

Μπορείτε να καλέσετε το εργαλείο CLI με το ντίζελ εντολή μετά την εγκατάσταση του εργαλείου.

Στη συνέχεια, δημιουργήστε ένα αρχείο μεταβλητών περιβάλλοντος και καθορίστε τη διεύθυνση URL της βάσης δεδομένων σας.

Εκτελέστε αυτήν την εντολή για να δημιουργήσετε και να εισαγάγετε τη διεύθυνση URL της βάσης δεδομένων για μια βάση δεδομένων SQLite στη μνήμη.

echo DATABASE_URL=database.db > .env

Για να εργαστείτε με το Diesel, πρέπει να εγκαταστήσετε το sqlite3 ή τη βάση δεδομένων που προτιμάτε στον υπολογιστή σας.

Τέλος, τρέξτε το εγκατάσταση εντολή για την Diesel να δημιουργήσει μια βάση δεδομένων για το έργο σας:

εγκατάσταση ντίζελ

ο εγκατάσταση η εντολή δημιουργεί α μεταναστεύσεις καταλόγου, δημιουργεί τη βάση δεδομένων που καθορίζεται στο DATABASE_URLκαι εκτελεί τις υπάρχουσες μετεγκαταστάσεις.

Ρύθμιση μεταναστεύσεων με ντίζελ

Αφού ρυθμίσετε τη βάση δεδομένων σας με το Diesel, θα χρησιμοποιήσετε το παράγουν μετανάστευση εντολή για τη δημιουργία αρχείων μετεγκατάστασης. Θα προσθέσετε το όνομα του αρχείου ως όρισμα:

Η μετανάστευση ντίζελ δημιουργεί create_humans

Η εντολή δημιουργεί δύο αρχεία SQL στο μεταναστεύσεις Ευρετήριο: up.sql και down.sql.

Θα γράψετε SQL για τους ορισμούς του πίνακα της βάσης δεδομένων σας στο up.sql αρχείο:

-- Η SQL σας πηγαίνει εδώ

ΔΗΜΙΟΥΡΓΩΤΡΑΠΕΖΙ"ο άνθρωπος"
(
"id" ΑΚΕΡΑΙΟΣ ΟΧΙ ΜΗΧΑΝΟΣ ΑΥΤΟΜΑΤΗ ΑΥΞΗΣΗ ΠΡΩΤΕΥΧΟΥ ΚΛΕΙΔΙΟΥ,
ΚΕΙΜΕΝΟ "first_name" ΟΧΙ NULL,
"last_name" ΚΕΙΜΕΝΟ ΟΧΙ ΜΗ ΜΗΧΑΝΟ,
"ηλικία" ΑΚΕΡΑΙΟΣ ΟΧΙ ΜΗΧΑΝΟΣ
);

Θα γράψετε κώδικα SQL για να αποθέσετε πίνακες βάσης δεδομένων στο down.sql αρχείο:

-- down.sql

-- Αυτό το αρχείο θα πρέπει να αναιρέσει οτιδήποτε στο "up.sql".
ΠΤΩΣΗΤΡΑΠΕΖΙ"ο άνθρωπος"

Αφού γράψετε τα αρχεία SQL, εκτελέστε το εκτέλεση μετανάστευσης εντολή για την εφαρμογή εκκρεμών μετεγκαταστάσεων.

κίνηση μετανάστευσης ντίζελ

Επιπλέον, μπορείτε να χρησιμοποιήσετε το επανάληψη της μετανάστευσης εντολή για επαναφορά μεταναστεύσεων:

επανάληψη της μετανάστευσης ντίζελ

Επίσης, μπορείτε να χρησιμοποιήσετε το εκτύπωση-σχήμα εντολή για την εκτύπωση του σχήματος. Η εντολή εκτυπώνει τα περιεχόμενα του schema.rs αρχείο.

ντίζελ εκτύπωση-σχήμα

Η έξοδος του print_schema Η εντολή είναι ο κώδικας Rust που ταιριάζει με το σχήμα SQL σας:

Σύνδεση στη βάση δεδομένων SQL με Diesel

Αρχικά, προσθέστε αυτές τις εισαγωγές και οδηγίες στο αρχείο σας:

mod σχήμα?

#[macro_use]
εξωτερικόσακαράκα ντίζελ;
χρήση dotenv:: dotenv;
χρήση diesel:: prelude::*;
χρήση std:: env;
χρήση Diesel::{Σύνδεση, ExpressionMethods, QueryDsl, RunQueryDsl, SqliteConnection};
χρήση κλουβί:: σχήμα:: άνθρωπος;

Θα χρησιμοποιήσετε τις εισαγωγές και τις οδηγίες για να συνδεθείτε στη βάση δεδομένων σας και να εκτελέσετε λειτουργίες.

Δείτε πώς μπορείτε να συνδεθείτε σε μια βάση δεδομένων SQLite με μια συνάρτηση και να επιστρέψετε μια παρουσία σύνδεσης:

χρήση std:: env;
χρήση diesel::{Σύνδεση, SqliteConnection};

στεγκατάσταση_σύνδεσης() -> SqliteConnection {
dotenv().ok();

αφήνω database_url = env:: var("DATABASE_URL")
.αναμένω("DATABASE_URL πρέπει να οριστεί");
SqliteConnection:: δημιουργία(&database_url)
.unwrap_or_else(|_| πανικός!("Σφάλμα σύνδεσης στο {}", database_url))
}

ο εγκατάσταση_σύνδεσης η συνάρτηση επιστρέφει τη δομή του στιγμιότυπου σύνδεσης (SqliteConnection). ο εγκατάσταση_σύνδεσης φορτώνει τις μεταβλητές περιβάλλοντος με το Εντάξει λειτουργία, αποκτά πρόσβαση στη διεύθυνση URL της βάσης δεδομένων με το var λειτουργία και δημιουργεί μια σύνδεση με τη βάση δεδομένων μέσω της διεύθυνσης URL με το εγκαθιδρύω λειτουργία.

Μετά από μια επιτυχημένη σύνδεση, μπορείτε να εκτελέσετε ερωτήματα και να τα εισαγάγετε στη βάση δεδομένων σας.

Εισαγωγή τιμών σε μια βάση δεδομένων με Diesel

Θα χρησιμοποιήσετε μια δομή που ταιριάζει με το σχήμα SQL για να εισαγάγετε τιμές στη βάση δεδομένων σας.

Εδώ είναι μια δομή που ταιριάζει με ο άνθρωπος σχήμα πίνακα:

#[προέλευση (με δυνατότητα ερωτήματος)]
καπηλειόstructΟ άνθρωπος {
καπηλειό ταυτότητα: i32,
καπηλειό όνομα: Σειρά,
καπηλειό επίθετο: Σειρά,
καπηλειό ηλικία: i32,
}

Η συνάρτηση εισαγωγής θα επιστρέψει ένα στιγμιότυπο του Ο άνθρωπος τύπου για άλλες λειτουργίες.

Θα χρειαστείτε μια δομή για τη συνάρτηση εισαγωγής. η δομή θα εφαρμόσει δύο χαρακτηριστικά μακροεντολής, το ένα για τη λειτουργία εισαγωγής και το άλλο που προσδιορίζει τον πίνακα για τη λειτουργία.

Ακολουθεί η δομή για τη λειτουργία εισαγωγής:

#[παραγωγή (με δυνατότητα εισαγωγής)]
#[όνομα_πίνακα = "ο άνθρωπος"]
structNewHuman<'ένα> {
όνομα: &'έναstr,
επίθετο: &'έναstr,
ηλικία: i32,
}

Η συνάρτηση εισαγωγής θα λάβει μια παρουσία σύνδεσης και τα δεδομένα που θέλετε να εισαγάγετε στη βάση δεδομένων. Εισαγάγετε τα δεδομένα και εκτυπώστε ένα μήνυμα με βάση την κατάσταση της λειτουργίας.

στinsert_into<'ένα>(σύνδεση: &SqliteConnection, first_name: &'έναstr, επίθετο: &'έναstr, ηλικία: i32) -> Άνθρωπος {
χρήση κλουβί:: σχήμα:: άνθρωπος;

αφήνω new_human = NewHuman {
όνομα,
επίθετο,
ηλικία,
};

diesel:: insert_into (human:: table).values(&new_human).execute (conn).expect("Σφάλμα κατά την εισαγωγή νέου ανθρώπου");

άνθρωπος:: πίνακας.παραγγελία (human:: id.desc()).πρώτος (conn).unwrap()
}

ο insert_into η συνάρτηση λαμβάνει τις παραμέτρους και εισάγει τις τιμές στη βάση δεδομένων με το Diesel's insert_into συνάρτηση που παίρνει στον πίνακα και το αξίες συνάρτηση που λαμβάνει σε ένα παράδειγμα δομής. Η συνάρτηση εκχωρεί το αναγνωριστικό με φθίνουσα σειρά με το περιγραφ λειτουργία πριν από την εκτέλεση της λειτουργίας.

Εδώ είναι το κύριος συνάρτηση που καλεί το insert_into λειτουργία:

στκύριος() {
αφήνω conn = install_connection();
αφήνω new_human = insert_into(&conn, "Γιάννης", "Ελαφίνα", 25);
println!("Έγινε εισαγωγή νέου ανθρώπου με αναγνωριστικό: {}", new_human.id);

}

ο συν η μεταβλητή είναι μια περίπτωση σύνδεσης και η new_human μεταβλητή είναι η κλήση συνάρτησης. ο κύριος λειτουργία εκτυπώνει το αναγνωριστικό μετά από επιτυχή λειτουργία.

Ερώτηση βάσεων δεδομένων με Diesel

Εναλλακτικά, η δομή της συνάρτησης ερωτήματός σας θα εφαρμόσει το Ερωτηματικό χαρακτηριστικό με α αντλώ μακροεντολή.

Ακολουθεί η δομή για τη λειτουργία ερωτήματος:

// Ορίστε μια δομή που αντιπροσωπεύει μια σειρά στον πίνακά σας
#[προέλευση (με δυνατότητα ερωτήματος)]
structΟ άνθρωπος {
ταυτότητα: i32,
όνομα: Σειρά,
επίθετο: Σειρά,
ηλικία: i32,
}

Η συνάρτηση ερωτήματος θα λάβει μια παρουσία σύνδεσης και θα επιστρέψει a Ο άνθρωπος δομή ως εξής:

στquery_db(σύνδεση: &SqliteConnection) -> Human {
human.filter (age.eq(25)).πρώτα (συνδ.). αναμένω("Σφάλμα κατά την αναζήτηση της βάσης δεδομένων")
}

ο query_db η συνάρτηση φιλτράρει τον ανθρώπινο πίνακα για τη σειρά όπου το ηλικία ισούται με 25 και επιστρέφει την πρώτη εμφάνιση ως στιγμιότυπο δομής.

στκύριος() {

αφήνω conn = install_connection();
αφήνω άτομο = query_db(&conn);

println!("Αναγνωριστικό: {}", person.id);
println!("Ονομα: {}", person.first_name);
println!("Επίθετο: {}", person.last_name);
println!("Ηλικία: {}", άτομο.ηλικία);
}

Στο κύριος λειτουργία, η πρόσωπο η μεταβλητή καλεί το query_db συνάρτηση και εκτυπώνει τα πεδία της σειράς με τιμή ηλικίας ίση με 25.

Μπορείτε να δημιουργήσετε διακομιστές Ιστού με Rust

Η Rust συνεχίζει να κερδίζει δημοτικότητα στην ανάπτυξη ιστού ως γλώσσα διακομιστή με βιβλιοθήκες όπως Actix-web και Ρουκέτα που διευκολύνουν τη ρύθμιση διακομιστών και τη δημιουργία API και ιστότοπων αφαιρώντας σύνθετες λειτουργίες.

Οι περισσότεροι διακομιστές Ιστού πρέπει να αλληλεπιδρούν με βάσεις δεδομένων για αποθήκευση και ανάκτηση δεδομένων. Μπορείτε να ενσωματώσετε περαιτέρω τις εφαρμογές σας που τροφοδοτούνται με Diesel με το Actix-web ή το Rocket για να δημιουργήσετε εξελιγμένες εφαρμογές web.