كيفية كتابة قاعدة بيانات لعبة بسيطة في بايثون في غضون دقائق

MySQL و PostgreSQL و Oracle و Redis وغيرها الكثير ، ما عليك سوى تسميتها - قواعد البيانات هي حقًا قطعة تقنية مهمة في تقدم الحضارة البشرية. اليوم يمكننا أن نرى مدى قيمة البيانات ، وبالتالي فإن الحفاظ عليها آمنة ومستقرة هو المكان الذي تأتي فيه قاعدة البيانات!

لذلك يمكننا أن نرى مدى أهمية قواعد البيانات أيضًا. لبعض الوقت ، كنت أفكر في إنشاء قاعدة بيانات My Own Toy فقط لفهمها واللعب بها وتجربتها. كما قال ريتشارد فاينمان :

"ما لا أستطيع إنشاؤه ، لا أفهمه."

لذا دون مزيد من الحديث ، دعنا ننتقل إلى الجزء الممتع: البرمجة.

لنبدأ الترميز ...

بالنسبة لقاعدة بيانات الألعاب هذه ، سنستخدم Python (المفضل لدي ❤️). لقد قمت بتسمية قاعدة البيانات هذه FooBarDB (لم أتمكن من العثور على أي اسم آخر؟) ، ولكن يمكنك تسميتها ما تريد!

لذلك دعنا أولاً نستورد بعض مكتبات Python الضرورية المتوفرة بالفعل في مكتبة Python القياسية:

import json import os

نعم ، نحن بحاجة فقط إلى هاتين المكتبتين! نحتاج jsonلأن قاعدة البيانات الخاصة بنا ستستند إلى JSON ، osوبعض العناصر المتعلقة بالمسار.

الآن دعنا نحدد الفئة الرئيسية FoobarDBببعض الوظائف الأساسية ، والتي سأشرحها أدناه.

class FoobarDB(object): def __init__(self , location): self.location = os.path.expanduser(location) self.load(self.location) def load(self , location): if os.path.exists(location): self._load() else: self.db = {} return True def _load(self): self.db = json.load(open(self.location , "r")) def dumpdb(self): try: json.dump(self.db , open(self.location, "w+")) return True except: return False

هنا قمنا بتعريف صنفنا الرئيسي __init__بوظيفة. عند إنشاء قاعدة بيانات Foobar ، نحتاج فقط إلى تمرير موقع قاعدة البيانات. في __init__الوظيفة الأولى ، نأخذ معلمة الموقع ونستبدل الدليل الرئيسي للمستخدم ~أو ~userبدليله لجعله يعمل بالطريقة المقصودة. وأخيرًا ، ضعها في self.locationمتغير للوصول إليها لاحقًا على نفس وظائف الفئة. في النهاية ، نحن نسمي loadالدالة تمرير self.locationكوسيطة.

. . . . def load(self , location): if os.path.exists(location): self._load() else: self.db = {} return True . . . .

في loadالوظيفة التالية نأخذ موقع قاعدة البيانات كمعلمة. ثم تحقق مما إذا كانت قاعدة البيانات موجودة أم لا. إذا كانت موجودة ، نقوم بتحميلها _load()بالوظيفة (الموضحة أدناه). خلاف ذلك ، نقوم بإنشاء كائن JSON فارغ في الذاكرة. وأخيرًا ، استرجع النجاح.

. . . . def _load(self): self.db = json.load(open(self.location , "r")) . . . .

في _loadالوظيفة ، نقوم ببساطة بفتح ملف قاعدة البيانات من الموقع المخزن فيه self.location. ثم نقوم بتحويله إلى كائن JSON وتحميله إلى self.dbمتغير.

. . . . def dumpdb(self): try: json.dump(self.db , open(self.location, "w+")) return True except: return False . . . .

وأخيرًا ، dumpdbالوظيفة: اسمها يقول ما تفعله. يأخذ قاعدة البيانات في الذاكرة (في الواقع كائن JSON) من self.dbالمتغير ويحفظها في ملف قاعدة البيانات! تقوم بإرجاع True إذا تم حفظها بنجاح ، وإلا فإنها ترجع False.

اجعلها أكثر قابلية للاستخدام ...؟

انتظر دقيقة! ؟ لا فائدة من قاعدة البيانات إذا لم تتمكن من تخزين البيانات واستردادها ، أليس كذلك؟ دعنا نذهب ونضيفها أيضا…؟

. . . . def set(self , key , value): try: self.db[str(key)] = value self.dumpdb() return True except Exception as e: print("[X] Error Saving Values to Database : " + str(e)) return False def get(self , key): try: return self.db[key] except KeyError: print("No Value Can Be Found for " + str(key)) return False def delete(self , key): if not key in self.db: return False del self.db[key] self.dumpdb() return True . . . .

و setظيفة لإضافة البيانات إلى قاعدة البيانات. كما قاعدة البيانات الخاصة بنا هي قاعدة بيانات بسيطة مفتاح قيمة القائمة، ونحن سوف يستغرق سوى keyو valueكحجة.

أولاً ، سنحاول إضافة المفتاح والقيمة إلى قاعدة البيانات ثم حفظ قاعدة البيانات. إذا سارت الأمور على ما يرام فسوف تعود إلى الحقيقة. وإلا ، فسيتم طباعة رسالة خطأ وإرجاع False. (لا نريد أن يتعطل ويمحو بياناتنا في كل مرة يحدث فيها خطأ؟).

. . . . def get(self, key): try: return self.db[key] except KeyError: return False . . . .

getهي وظيفة بسيطة ، نأخذها keyكوسيطة ونحاول إرجاع القيمة المرتبطة بالمفتاح من قاعدة البيانات. وإلا يتم إرجاع False مع رسالة.

. . . . def delete(self , key): if not key in self.db: return False del self.db[key] self.dumpdb() return True . . . .

deleteالوظيفة هي حذف مفتاح بالإضافة إلى قيمته من قاعدة البيانات. أولاً ، نتأكد من وجود المفتاح في قاعدة البيانات. إذا لم يتم إرجاع خطأ. خلاف ذلك ، نقوم بحذف المفتاح الذي يحتوي على المفتاح المدمج delالذي يحذف تلقائيًا قيمة المفتاح. بعد ذلك ، نقوم بحفظ قاعدة البيانات وإرجاعها كاذبة.

الآن قد تفكر ، ماذا لو أنشأت قاعدة بيانات كبيرة وأردت إعادة تعيينها؟ من الناحية النظرية ، يمكننا استخدام delete- لكنها ليست عملية ، كما أنها تستغرق وقتًا طويلاً! ⏳ حتى نتمكن من إنشاء دالة للقيام بهذه المهمة ...

. . . . def resetdb(self): self.db={} self.dumpdb() return True . . . .

ها هي وظيفة إعادة تعيين قاعدة البيانات ، resetdb! الأمر بسيط للغاية: أولاً ، ما نقوم به هو إعادة تخصيص قاعدة البيانات الموجودة في الذاكرة بكائن JSON فارغ ويقوم بحفظه فقط! وهذا كل شيء! قاعدة بياناتنا الآن حليقة مرة أخرى.

أخيرا… ؟

هذا كل شيء أصدقاء! لقد أنشأنا قاعدة بيانات الألعاب الخاصة بنا ! ؟؟ في الواقع ، إن obarDB هو مجرد عرض توضيحي بسيط لقاعدة البيانات. إنها مثل لعبة DIY رخيصة: يمكنك تحسينها بالطريقة التي تريدها. يمكنك أيضًا إضافة العديد من الوظائف الأخرى وفقًا لاحتياجاتك.

المصدر الكامل هنا؟ بوريبالاش / فوباردب

اتمنى ان تكون قد استمتعت به! اسمحوا لي أن أعرف اقتراحاتك أو أفكارك أو أخطائك في التعليقات أدناه! ؟

متابعة / ping لي على الشبكات الاجتماعية؟ Facebook و Twitter و Instagram

شكرا لك! اراك قريبا!

إذا كنت تحب عملي (مقالاتي وقصصي وبرامجي وأبحاثي وغيرها الكثير) ففكر في شراء قهوة لي ☕؟