जंग में SQL डेटाबेस का उपयोग शुरू करने में आपकी मदद करने के लिए यहां एक गाइड है।
जैसा कि आप अधिक रस्ट प्रोग्राम बनाते हैं, आपको डेटा संग्रहण और पुनर्प्राप्ति के लिए डेटाबेस के साथ सहभागिता करने की आवश्यकता हो सकती है।
जंग की मजबूत टाइपिंग, मेमोरी सुरक्षा और प्रदर्शन, एसिंक्रोनस ऑपरेशंस, ओआरएम और के लिए इसके समर्थन के साथ संयुक्त माइग्रेशन, कुशल और स्केलेबल डेटा प्रोसेसिंग को सक्षम बनाता है, जिससे रस्ट डेटाबेस बनाने के लिए एक उत्कृष्ट विकल्प बन जाता है अनुप्रयोग।
रस्ट में SQL डेटाबेस का उपयोग करने का परिचय
रस्ट इकोसिस्टम में कई डेटाबेस क्रेट और लाइब्रेरी हैं जो विभिन्न डेटाबेस प्रतिमानों के लिए सहायता प्रदान करते हैं।
SQL डेटाबेस के लिए, आपको डेटाबेस ड्राइवरों के बीच चयन करने को मिलता है लिबपक, मैसकल-कनेक्टर, और स्क्लाइट3 जो SQL और ORMs (ऑब्जेक्ट-रिलेशनल मैपर्स) जैसे किसी भी अमूर्त परत के बिना सीधे डेटाबेस के साथ इंटरैक्ट करने के लिए रस्ट प्रोग्राम के लिए एक इंटरफ़ेस प्रदान करता है डीज़ल, एसक्यूएलएक्स, और जंग-postgres जो डेटाबेस के साथ काम करने का एक सुविधाजनक तरीका प्रदान करता है जंग डेटा प्रकार जैसे कि संरचना और कार्य।
डीज़ल ORM रस्ट इकोसिस्टम में सबसे लोकप्रिय डेटाबेस पैकेजों में से एक है। एक ORM के रूप में, डीजल क्वेरी निर्माण और निष्पादन से लेकर मॉडल परिभाषा और डेटाबेस स्कीमा माइग्रेशन तक सुविधाएँ प्रदान करता है, जिससे आपके लिए डेटाबेस के साथ सहभागिता करना आसान हो जाता है और कुशल, स्वच्छ और आसानी से बनाए रखने वाला कोड लिखें.
डीजल भी साथ देता है PostgreSQL, MySQL और SQLite सहित कई डेटाबेस इंजन, और लेन-देन, जुड़ने और कुल कार्यों जैसे जटिल डेटाबेस संचालन को संभालने के लिए सुविधाओं का एक मजबूत सेट प्रदान करता है।
शक्तिशाली उपकरणों, सुविधाओं और उत्कृष्ट प्रलेखन के साथ, डीजल कई रस्ट डेवलपर्स के लिए एक पसंदीदा विकल्प बन गया है जो मजबूत और स्केलेबल डेटा-संचालित एप्लिकेशन बनाने की तलाश में हैं।
डीजल के साथ शुरुआत करना
आपको जोड़ना होगा डीजल और dotenv आपके प्रोजेक्ट की निर्भरताओं को क्रेट करता है आपके कार्गो.टोमल फ़ाइल।
[निर्भरता]
डीजल = {संस्करण = "1.4.4", सुविधाएँ = ["स्क्लाइट"] }
dotenv = "0.15.0"
क्रेट को निर्भरता के रूप में जोड़ने के बाद, आपको इसे स्थापित करना होगा डीजल_क्ली सीएलआई उपकरण डीजल के साथ बातचीत करने के लिए।
स्थापित करने के लिए इस आदेश को चलाएँ डीजल_क्ली औजार:
कार्गो डीजल_क्ली स्थापित करें
आप CLI टूल को इसके साथ कॉल कर सकते हैं डीजल टूल इंस्टॉल करने के बाद कमांड।
अगला, एक पर्यावरण चर फ़ाइल बनाएँ और अपना डेटाबेस URL निर्दिष्ट करें।
इन-मेमोरी SQLite डेटाबेस के लिए डेटाबेस URL बनाने और सम्मिलित करने के लिए यह कमांड चलाएँ।
गूंज DATABASE_URL=database.db > .env
डीजल के साथ काम करने के लिए, आपको अपने कंप्यूटर पर sqlite3 या अपना पसंदीदा डेटाबेस स्थापित करना होगा।
अंत में, चलाएँ स्थापित करना आपकी परियोजना के लिए एक डेटाबेस स्थापित करने के लिए डीजल के लिए कमांड:
डीजल सेटअप
स्थापित करना कमांड ए बनाता है माइग्रेशन निर्देशिका, में निर्दिष्ट डेटाबेस बनाता है DATABASE_URL, और मौजूदा माइग्रेशन चलाता है।
डीजल के साथ प्रवासन की स्थापना
डीजल के साथ अपना डेटाबेस सेट अप करने के बाद, आप इसका उपयोग करेंगे प्रवासन उत्पन्न करता है माइग्रेशन फ़ाइलें उत्पन्न करने के लिए आदेश। आप तर्क के रूप में फ़ाइल का नाम जोड़ देंगे:
डीजल माइग्रेशन create_humans उत्पन्न करता है
आदेश में दो SQL फ़ाइलें उत्पन्न करता है माइग्रेशन निर्देशिका: up.sql और नीचे.एसक्यूएल.
आप अपने डेटाबेस तालिका परिभाषाओं के लिए SQL में लिखेंगे up.sql फ़ाइल:
- आपका एसक्यूएल यहां जाता है
बनाएंमेज"इंसान"
(
"आईडी" पूर्णांक प्राथमिक कुंजी ऑटोइंक्रिमेंट नहीं है,
"first_name" टेक्स्ट खाली नहीं है,
"last_name" टेक्स्ट खाली नहीं है,
"आयु" पूर्णांक शून्य नहीं है
);
आप डेटाबेस टेबल को ड्रॉप करने के लिए SQL कोड लिखेंगे नीचे.एसक्यूएल फ़ाइल:
- डाउन.एसक्यूएल
-- इस फ़ाइल को `up.sql` में कुछ भी पूर्ववत करना चाहिए
बूँदमेज"इंसान"
SQL फ़ाइलें लिखने के बाद, चलाएँ माइग्रेशन रन लंबित माइग्रेशन लागू करने का आदेश।
डीजल माइग्रेशन रन
इसके अतिरिक्त, आप का उपयोग कर सकते हैं माइग्रेशन फिर से करें माइग्रेशन वापस करने का आदेश:
डीजल माइग्रेशन फिर से करें
साथ ही, आप का उपयोग कर सकते हैं print-schema स्कीमा प्रिंट करने का आदेश। कमांड की सामग्री को प्रिंट करता है स्कीमा.आरएस फ़ाइल।
डीजल प्रिंट-स्कीमा
का आउटपुट print_schema कमांड रस्ट कोड है जो आपके SQL स्कीमा से मेल खाता है:
डीजल के साथ अपने SQL डेटाबेस से कनेक्ट करना
सबसे पहले, इन आयातों और निर्देशों को अपनी फ़ाइल में जोड़ें:
आधुनिक स्कीमा;
#[मैक्रो_उपयोग]
बाहरीटोकरा डीजल;
उपयोग dotenv:: dotenv;
उपयोग डीजल:: प्रस्तावना ::*;
उपयोग एसटीडी:: env;
उपयोग डीजल:: {कनेक्शन, एक्सप्रेशनमेथोड्स, क्वेरीडीएसएल, रनक्वेरीडीएसएल, स्क्लाइटकनेक्शन};
उपयोग क्रेट:: स्कीमा:: मानव;
आप अपने डेटाबेस से जुड़ने और संचालन करने के लिए आयात और निर्देशों का उपयोग करेंगे।
यहां बताया गया है कि आप किसी फ़ंक्शन के साथ SQLite डेटाबेस से कैसे जुड़ सकते हैं और एक कनेक्शन उदाहरण वापस कर सकते हैं:
उपयोग एसटीडी:: env;
उपयोग डीजल:: {कनेक्शन, स्क्लाइट कनेक्शन};fnestabl_connection() -> स्क्लाइट कनेक्शन {
dotenv ()। ठीक ();
होने देना डेटाबेस_url = env:: वर ("DATABASE_URL")
।अपेक्षा करना("DATABASE_URL सेट होना चाहिए");
SqliteConnection:: स्थापित करें (&database_url)
.unwrap_or_else(|_| घबड़ाहट!("{} से कनेक्ट करने में त्रुटि", डेटाबेस_यूआरएल))
}
establ_connection फ़ंक्शन कनेक्शन उदाहरण संरचना लौटाता है (sqliteConnection). establ_connection के साथ पर्यावरण चर लोड करता है ठीक फ़ंक्शन, डेटाबेस URL तक पहुँचता है वर कार्य करता है, और URL के माध्यम से डेटाबेस के साथ संबंध स्थापित करता है स्थापित करना समारोह।
एक सफल कनेक्शन के बाद, आप प्रश्नों को निष्पादित कर सकते हैं और उन्हें अपने डेटाबेस में सम्मिलित कर सकते हैं।
डीजल के साथ डेटाबेस में मान सम्मिलित करना
आप अपने डेटाबेस में मान डालने के लिए अपने SQL स्कीमा से मेल खाने वाली संरचना का उपयोग करेंगे।
यहाँ एक संरचना है जो इससे मेल खाती है इंसान टेबल स्कीमा:
# [व्युत्पन्न (प्रश्न योग्य)]
पबstructइंसान {
पब पहचान: i32,
पब पहला नाम: डोरी,
पब उपनाम: डोरी,
पब आयु: i32,
}
सम्मिलन फ़ंक्शन का एक उदाहरण लौटाएगा इंसान अन्य कार्यों के लिए टाइप करें।
आपको अपने सम्मिलन समारोह के लिए एक संरचना की आवश्यकता होगी; संरचना दो मैक्रो विशेषताओं को लागू करेगी, एक सम्मिलन कार्यक्षमता के लिए और दूसरी जो ऑपरेशन के लिए तालिका की पहचान करती है।
सम्मिलन ऑपरेशन के लिए यहां संरचना है:
#[व्युत्पन्न (सम्मिलित करने योग्य)]
#[तालिका_नाम = "इंसान"]
structनया मानव<'ए> {
पहला नाम: &'एएसटीआर,
उपनाम: &'एएसटीआर,
आयु: i32,
}
आपका सम्मिलन फ़ंक्शन एक कनेक्शन उदाहरण और वह डेटा लेगा जिसे आप डेटाबेस में सम्मिलित करना चाहते हैं। ऑपरेशन की स्थिति के आधार पर डेटा डालें और एक संदेश प्रिंट करें।
fnमें सम्मिलित करें<'ए>(संपर्क: &SqliteConnection, first_name: &'एएसटीआर, उपनाम: &'एएसटीआर, आयु: i32) -> मानव {
उपयोग क्रेट:: स्कीमा:: मानव;होने देना नया_मानव = नया मानव {
पहला नाम,
उपनाम,
आयु,
};डीजल:: insert_into (मानव:: तालिका)। मूल्य (&new_human).निष्पादन (कॉन) .उम्मीद ("नया मानव सम्मिलित करने में त्रुटि");
मानव:: तालिका। आदेश (मानव:: id.desc ())। पहला (कॉन) .अनरैप ()
}
में सम्मिलित करें फ़ंक्शन मापदंडों में लेता है और मूल्यों को डीजल के साथ डेटाबेस में सम्मिलित करता है में सम्मिलित करें फ़ंक्शन जो तालिका में लेता है और मान फ़ंक्शन जो संरचना उदाहरण में लेता है। फ़ंक्शन आईडी को अवरोही क्रम में निर्दिष्ट करता है वर्णन ऑपरेशन को अंजाम देने से पहले कार्य करें।
यहाँ है मुख्य फ़ंक्शन जो कॉल करता है में सम्मिलित करें समारोह:
fnमुख्य() {
होने देना कनेक्ट = स्थापित_कनेक्शन ();
होने देना new_human = insert_into(&conn, "जॉन", "डो", 25);
प्रिंटल!("आईडी के साथ डाला गया नया मानव: {}", new_human.id);
}
कॉन चर एक कनेक्शन उदाहरण है, और new_human चर फ़ंक्शन कॉल है। मुख्य फ़ंक्शन एक सफल ऑपरेशन के बाद आईडी को प्रिंट करता है।
डीजल के साथ डेटाबेस को क्वेरी करना
वैकल्पिक रूप से, आपकी क्वेरी फ़ंक्शन संरचना लागू करेगी पूछने योग्य ए के साथ विशेषता निकाले जाते हैं मैक्रो।
यहाँ क्वेरी ऑपरेशन के लिए संरचना है:
// एक संरचना को परिभाषित करें जो आपकी तालिका में एक पंक्ति का प्रतिनिधित्व करती है
# [व्युत्पन्न (प्रश्न योग्य)]
structइंसान {
पहचान: i32,
पहला नाम: डोरी,
उपनाम: डोरी,
आयु: i32,
}
क्वेरी फ़ंक्शन एक कनेक्शन उदाहरण लेगा और एक लौटाएगा इंसान संरचना इस प्रकार है:
fnquery_db(conn: &SqliteConnection) -> मानव {
मानव.फ़िल्टर (उम्र.eq(25)).फर्स्ट (कॉन).उम्मीद ("डेटाबेस क्वेरी करने में त्रुटि")
}
query_db फ़ंक्शन उस पंक्ति के लिए मानव तालिका को फ़िल्टर करता है जहाँ आयु 25 के बराबर है और पहली घटना को एक संरचना उदाहरण के रूप में लौटाता है।
fnमुख्य() {
होने देना कनेक्ट = स्थापित_कनेक्शन ();
होने देना व्यक्ति = query_db(&conn);
प्रिंटल!("पहचान: {}", व्यक्ति.आईडी);
प्रिंटल!("पहला नाम: {}", व्यक्ति.पहला_नाम);
प्रिंटल!("उपनाम: {}", व्यक्ति.अंतिम_नाम);
प्रिंटल!("आयु: {}", व्यक्ति.उम्र);
}
में मुख्य कार्य, द व्यक्ति वेरिएबल कॉल करता है query_db कार्य करता है और पंक्ति के फ़ील्ड को 25 के बराबर आयु मान के साथ प्रिंट करता है।
आप रस्ट के साथ वेब सर्वर बना सकते हैं
पुस्तकालयों के साथ सर्वर-साइड भाषा के रूप में वेब विकास में जंग की लोकप्रियता जारी है एक्टिक्स-वेब और राकेट जो जटिल कार्यप्रणाली को सार करके सर्वर सेट अप करना और एपीआई और वेबसाइट बनाना आसान बनाता है।
अधिकांश वेब सर्वरों को डेटा संग्रहण और पुनर्प्राप्ति के लिए डेटाबेस के साथ सहभागिता करनी पड़ती है। परिष्कृत वेब एप्लिकेशन बनाने के लिए आप अपने डीजल-संचालित ऐप्स को एक्टिक्स-वेब या रॉकेट के साथ एकीकृत कर सकते हैं।