Rust में डेटाबेस के साथ काम करना: शुरुआती लोगों के लिए PostgreSQL और MongoDB

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Rust में डेटाबेस के साथ काम करना: शुरुआती लोगों के लिए PostgreSQL और MongoDB

\n\n

Rust एक आधुनिक सिस्टम प्रोग्रामिंग भाषा है जो अपने प्रदर्शन और सुरक्षा के कारण लोकप्रियता प्राप्त कर रही है। लेकिन Rust में डेटाबेस के साथ कैसे काम करें? इस लेख में हम दो लोकप्रिय DBMS: रिलेशनल PostgreSQL और डॉक्यूमेंट-ओरिएंटेड MongoDB के साथ कनेक्शन और बुनियादी संचालन करने पर चर्चा करेंगे। यह सामग्री Rust की मूल बातों से परिचित शुरुआती डेवलपर्स के लिए है।

\n\n

Rust और डेटाबेस एक अच्छा संयोजन क्यों हैं?

\n\n

Rust एक सख्त प्रकार प्रणाली और मेमोरी सुरक्षा गारंटी प्रदान करता है, जो डेटा के साथ काम करते समय विशेष रूप से मूल्यवान है। C/C++ में आम मेमोरी एक्सेस त्रुटियां संकलन चरण में ही समाप्त हो जाती हैं। इसके अलावा, Rust के इकोसिस्टम में डेटाबेस के साथ इंटरैक्शन के लिए परिपक्व लाइब्रेरी शामिल हैं: PostgreSQL के लिए diesel और MongoDB के लिए आधिकारिक ड्राइवर।

\n\n

इस लेख में हम सीखेंगे:

\n
    \n
  • Rust से PostgreSQL और MongoDB से कनेक्ट करना
  • \n
  • CRUD-संचालन (निर्माण, पढ़ना, अद्यतन, हटाना) करना
  • \n
  • क्वेरी परिणामों के साथ सुरक्षित और कुशलतापूर्वक काम करना
  • \n
\n\n

1. Diesel लाइब्रेरी के माध्यम से PostgreSQL के साथ काम करना

\n\n

Diesel Rust के लिए एक ORM और query builder है जो संकलन स्तर पर प्रकार सुरक्षा सुनिश्चित करता है। शुरू करने के लिए Cargo.toml में निर्भरताएँ जोड़ें:

\n\n
[dependencies]\ndiesel = { version = "2.1", features = ["postgres"] }\ndotenvy = "0.15"\nserde = { version = "1.0", features = ["derive"] }\nserde_json = "1.0"\ntokio = { version = "1.0", features = ["full"] }
\n\n

कनेक्शन सेटअप

\n\n

अपने डेटाबेस URL के साथ एक .env फ़ाइल बनाएँ:

\n\n
DATABASE_URL=postgres://user:password@localhost/mydb
\n\n

अब कनेक्शन और तालिका बनाने के लिए कोड लिखते हैं:

\n\n
use diesel::prelude::*;\nuse diesel::pg::PgConnection;\nuse dotenvy::dotenv;\nuse std::env;\n\npub fn establish_connection() -> PgConnection {\n    dotenv().ok();\n    let database_url = env::var("DATABASE_URL")\n        .expect("DATABASE_URL must be set");\n    PgConnection::establish(&database_url)\n        .unwrap_or_else(|_| panic!("Error connecting to {}", database_url))\n}
\n\n

स्कीमा और मॉडल की परिभाषा

\n\n

एक users तालिका और संबंधित Rust मॉडल बनाते हैं:

\n\n
// schema.rs\ntable! {\n    users (id) {\n        id -> Int4,\n        name -> Varchar,\n        email -> Varchar,\n        created_at -> Timestamp,\n    }\n}\n\n// models.rs\n#[derive(Queryable, Selectable)]\n#[diesel(table_name = crate::schema::users)]\n#[diesel(check_for_backend(diesel::pg::Pg))]\npub struct User {\n    pub id: i32,\n    pub name: String,\n    pub email: String,\n    pub created_at: chrono::NaiveDateTime,\n}\n\n#[derive(Insertable)]\n#[diesel(table_name = crate::schema::users)]\npub struct NewUser {\n    pub name: String,\n    pub email: String,\n}
\n\n

CRUD-संचालन

\n\n

उपयोगकर्ताओं को बनाने और पढ़ने का उदाहरण:

\n\n
use crate::models::{User, NewUser};\nuse crate::schema::users;\n\npub fn create_user(conn: &mut PgConnection, name: &str, email: &str) -> User {\n    let new_user = NewUser {\n        name: name.to_string(),\n        email: email.to_string(),\n    };\n\n    diesel::insert_into(users::table)\n        .values(&new_user)\n        .returning(User::as_returning())\n        .get_result(conn)\n        .expect("Error saving new user")\n}\n\npub fn get_all_users(conn: &mut PgConnection) -> Vec {\n    users::table\n        .load::(conn)\n        .expect("Error loading users")\n}
\n\n

जैसा कि आप देख सकते हैं, Diesel संकलन चरण में प्रकार और कॉलम नामों की जाँच करता है। फ़ील्ड नाम में त्रुटि runtime विफलता के बजाय संकलन त्रुटि का कारण बनेगी।

\n\n

2. आधिकारिक ड्राइवर के माध्यम से MongoDB के साथ काम करना

\n\n

MongoDB एक NoSQL डेटाबेस है जो JSON-जैसे प्रारूप में डेटा संग्रहीत करता है

ब्लॉग

पुस्तक अनुशंसाएँ