إليك دليل لمساعدتك على البدء في استخدام قواعد بيانات SQL في Rust.

أثناء إنشاء المزيد من برامج Rust ، قد تحتاج إلى التفاعل مع قواعد البيانات لتخزين البيانات واسترجاعها.

كتابة Rust القوية ، وأمان الذاكرة ، والأداء ، جنبًا إلى جنب مع دعمه للعمليات غير المتزامنة ، و ORMs ، و عمليات الترحيل ، وتمكين معالجة البيانات بكفاءة وقابلة للتطوير ، مما يجعل Rust خيارًا ممتازًا لبناء قاعدة بيانات التطبيقات.

مقدمة في استخدام قواعد بيانات SQL في Rust

هناك العديد من صناديق قواعد البيانات والمكتبات في نظام Rust البيئي التي توفر الدعم لنماذج قواعد البيانات المختلفة.

بالنسبة لقواعد بيانات SQL ، يمكنك الاختيار بين برامج تشغيل قواعد البيانات مثل Libpq, موصل مسقل، و سكليت 3 التي توفر واجهة لبرامج Rust للتفاعل مع قواعد البيانات مباشرة دون أي طبقة تجريد على SQL و ORMs (مخطط الكائنات العلائقية) مثل ديزل, سكوير، و الصدأ بوستجرس التي توفر طريقة ملائمة للعمل مع قاعدة البيانات أنواع بيانات الصدأ مثل الهياكل والوظائف.

يُعد Diesel ORM أحد حزم قواعد البيانات الأكثر شيوعًا في نظام Rust البيئي. بصفته ORM ، يوفر Diesel ميزات من بناء الاستعلام وتنفيذه إلى تعريف النموذج وترحيل مخطط قاعدة البيانات ، مما يسهل عليك التفاعل مع قواعد البيانات و

instagram viewer
كتابة تعليمات برمجية فعالة ونظيفة وسهلة الصيانة.

كما يدعم الديزل محركات قواعد بيانات متعددة بما في ذلك PostgreSQL و MySQL و SQLite، ويوفر مجموعة قوية من الميزات للتعامل مع عمليات قاعدة البيانات المعقدة مثل المعاملات والصلات والوظائف المجمعة.

بفضل الأدوات والميزات القوية والوثائق الممتازة ، أصبح Diesel خيارًا مفضلًا للعديد من مطوري Rust الذين يتطلعون إلى إنشاء تطبيقات قوية وقابلة للتطوير تعتمد على البيانات.

الشروع في استخدام الديزل

سيتعين عليك إضافة ديزل و دوتنف صناديق تبعيات مشروعك في قسم التبعيات في شحن ملف.

[التبعيات]
ديزل = {الإصدار = "1.4.4"، الميزات = ["sqlite"] }
دوتنف = "0.15.0"

بعد إضافة الصناديق كاعتماديات ، يجب عليك تثبيت ملف ديزل_كلي أداة CLI للتفاعل مع الديزل.

قم بتشغيل هذا الأمر لتثبيت ديزل_كلي أداة:

تثبيت البضائع diesel_cli

يمكنك استدعاء أداة CLI بامتداد ديزل الأمر بعد تثبيت الأداة.

بعد ذلك ، قم بإنشاء ملف متغيرات البيئة وحدد عنوان URL لقاعدة البيانات الخاصة بك.

قم بتشغيل هذا الأمر لإنشاء وإدراج عنوان URL لقاعدة البيانات لقاعدة بيانات SQLite في الذاكرة.

صدى DATABASE_URL = database.db> .env

للعمل مع ديزل ، يجب عليك تثبيت sqlite3 أو قاعدة البيانات المفضلة لديك على جهاز الكمبيوتر الخاص بك.

أخيرًا ، قم بتشغيل ملف يثبت أمر ديزل بإعداد قاعدة بيانات لمشروعك:

إعداد الديزل

ال يثبت يقوم الأمر بإنشاء ملف الهجرات الدليل ، يقوم بإنشاء قاعدة البيانات المحددة في ملف DATABASE_URL، ويقوم بتشغيل عمليات الترحيل الحالية.

إعداد الهجرات بالديزل

بعد إعداد قاعدة البيانات الخاصة بك مع Diesel ، ستستخدم امتداد توليد الهجرة الأمر لتوليد ملفات الهجرة. ستضيف اسم الملف كوسيطة:

هجرة الديزل تولد create_humans

يقوم الأمر بإنشاء ملفين SQL في ملف الهجرات الدليل: up.sql و أسفل.

ستكتب SQL لتعريفات جدول قاعدة البيانات في ملف up.sql ملف:

- SQL الخاص بك يذهب هنا

يخلقطاولة"بشر"
(
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT ،
"الاسم الأول" النص ليس فارغًا ،
"اسم_الأخير" النص ليس فارغًا ،
"العمر" INTEGER NOT NULL
);

ستكتب رمز SQL لإسقاط جداول قاعدة البيانات في ملف أسفل ملف:

- down.sql

- يجب أن يتراجع هذا الملف عن أي شيء في "up.sql"
يسقططاولة"بشر"

بعد كتابة ملفات SQL ، قم بتشغيل ملف تشغيل الهجرة الأمر لتطبيق عمليات الترحيل المعلقة.

تشغيل هجرة الديزل

بالإضافة إلى ذلك ، يمكنك استخدام ملف إعادة الهجرة الأمر لعودة عمليات الترحيل:

إعادة هجرة الديزل

أيضًا ، يمكنك استخدام ملف مخطط الطباعة أمر لطباعة المخطط. يقوم الأمر بطباعة محتويات ملف مخطط rs ملف.

مخطط طباعة الديزل

إخراج ملف طباعة_مخطط الأمر هو رمز Rust الذي يطابق مخطط SQL الخاص بك:

الاتصال بقاعدة بيانات SQL الخاصة بك بالديزل

أولاً ، أضف هذه الواردات والتوجيهات إلى ملفك:

عصري مخطط؛

# [استخدام الماكرو]
خارجيقفص ديزل؛
يستخدم dotenv:: dotenv ؛
يستخدم ديزل:: مقدمة:: *؛
يستخدم الأمراض المنقولة جنسيا:: إنف ؛
يستخدم ديزل:: {Connection، ExpressionMethods، QueryDsl، RunQueryDsl، SqliteConnection}؛
يستخدم قفص:: مخطط:: إنسان ؛

ستستخدم عمليات الاستيراد والتوجيهات للاتصال بقاعدة البيانات وتنفيذ العمليات.

إليك كيفية الاتصال بقاعدة بيانات SQLite باستخدام وظيفة وإرجاع نسخة اتصال:

يستخدم الأمراض المنقولة جنسيا:: إنف ؛
يستخدم ديزل:: {Connection، SqliteConnection}؛

الجبهة الوطنيةإنشاء_توصيل() -> SqliteConnection {
dotenv (). ok () ؛

يترك database_url = env:: var ("DATABASE_URL")
.يتوقع("يجب تعيين DATABASE_URL");
SqliteConnection:: إنشاء (& database_url)
.unwrap_or_else (| _ | ذعر!("خطأ في الاتصال بـ {}"، database_url))
}

ال إنشاء_توصيل تقوم الدالة بإرجاع بنية مثيل الاتصال (اتصال). ال إنشاء_توصيل يحمل متغيرات البيئة مع نعم وظيفة ، يصل إلى عنوان URL لقاعدة البيانات بامتداد فار وظيفة ، وينشئ اتصالاً بقاعدة البيانات عبر عنوان URL بامتداد يٌرسّخ وظيفة.

بعد اتصال ناجح ، يمكنك تنفيذ الاستعلامات وإدراجها في قاعدة البيانات الخاصة بك.

إدخال القيم إلى قاعدة بيانات بالديزل

ستستخدم بنية تطابق مخطط SQL لإدراج القيم في قاعدة البيانات.

إليك بنية تتطابق مع بشر مخطط الجدول:

# [اشتقاق (استعلام)]
حانةهيكلبشر {
حانة بطاقة تعريف: i32,
حانة الاسم الأول: خيط,
حانة اسم العائلة: خيط,
حانة عمر: i32,
}

ستعيد وظيفة الإدراج مثيلاً لملف بشر اكتب لعمليات أخرى.

سوف تحتاج إلى هيكل لوظيفة الإدراج الخاصة بك ؛ ستنفذ البنية سمتين ماكرو ، إحداهما لوظيفة الإدراج والأخرى تحدد جدول العملية.

إليك هيكل عملية الإدخال:

# [اشتقاق (قابل للإدراج)]
# [table_name = "بشر"]
هيكلجديد<> {
الاسم الأول: &شارع,
اسم العائلة: &شارع,
عمر: i32,
}

ستأخذ وظيفة الإدراج في مثيل اتصال والبيانات التي تريد إدراجها في قاعدة البيانات. أدخل البيانات واطبع رسالة بناءً على حالة العملية.

الجبهة الوطنيةادخل في<> (conn: & SqliteConnection، first_name: &شارع، اسم العائلة: &شارع، عمر: i32) -> الإنسان {
يستخدم قفص:: مخطط:: إنسان ؛

يترك new_human = NewHuman {
الاسم الأول،
اسم العائلة،
عمر،
};

ديزل:: insert_into (human:: table) .values ​​(& new_human). execute (conn) .expect ("خطأ في إدخال إنسان جديد");

human:: table.order (human:: id.desc ()). first (conn) .unwrap ()
}

ال ادخل في تأخذ الدالة المعلمات وتدرج القيم في قاعدة البيانات مع ديزل ادخل في الوظيفة التي تأخذ في الجدول و قيم الوظيفة التي تأخذ مثيل البنية. تقوم الوظيفة بتعيين المعرف بترتيب تنازلي مع تنازلي تعمل قبل تنفيذ العملية.

ها هي رئيسي الوظيفة التي تستدعي ادخل في وظيفة:

الجبهة الوطنيةرئيسي() {
يترك conn = create_connection () ؛
يترك new_human = insert_into (& conn، "جون", "الفلاني", 25);
println!("إدخال شخص جديد بالمعرف: {}"، new_human.id) ؛

}

ال كون المتغير هو مثيل اتصال ، و إنسان جديد المتغير هو استدعاء الوظيفة. ال رئيسي تقوم الوظيفة بطباعة المعرف بعد عملية ناجحة.

الاستعلام عن قواعد البيانات بالديزل

بدلاً من ذلك ، ستقوم بنية دالة الاستعلام بتنفيذ الامتداد قابل للاستعلام السمة مع استخلاص دقيق.

فيما يلي هيكل عملية الاستعلام:

// حدد بنية تمثل صفًا في جدولك
# [اشتقاق (استعلام)]
هيكلبشر {
بطاقة تعريف: i32,
الاسم الأول: خيط,
اسم العائلة: خيط,
عمر: i32,
}

ستأخذ وظيفة الاستعلام مثيل اتصال وتعيد ملف بشر هيكل على النحو التالي:

الجبهة الوطنيةquery_db(conn: & SqliteConnection) -> الإنسان {
مرشح الإنسان (Age.eq (25)). first (conn) .expect ("خطأ في الاستعلام عن قاعدة البيانات")
}

ال query_db تقوم الوظيفة بتصفية الجدول البشري للصف الذي يحتوي على ملف عمر يساوي 25 ويعيد التواجد الأول كمثيل تركيبي.

الجبهة الوطنيةرئيسي() {

يترك conn = create_connection () ؛
يترك person = query_db (& conn)؛

println!("بطاقة تعريف: {}"، person.id) ؛
println!("الاسم الأول: {}"، person.first_name) ؛
println!("اسم العائلة: {}"، person.last_name) ؛
println!("عمر: {}"، person.age) ؛
}

في ال رئيسي وظيفة شخص متغير يستدعي ال query_db الدالة ويطبع حقول الصف بقيمة عمرية تساوي 25.

يمكنك بناء خوادم الويب مع الصدأ

يستمر Rust في اكتساب شعبية في تطوير الويب كلغة من جانب الخادم مع مكتبات مثل أكتيكس ويب و صاروخ التي تسهل إعداد الخوادم وبناء واجهات برمجة التطبيقات ومواقع الويب من خلال استخلاص الوظائف المعقدة.

يجب أن تتفاعل معظم خوادم الويب مع قواعد البيانات لتخزين البيانات واسترجاعها. يمكنك أيضًا دمج تطبيقاتك التي تعمل بالديزل مع Actix-web أو Rocket لإنشاء تطبيقات ويب متطورة.