MySQL, PostgreSQL, Oracle, Redis та багато інших, ви просто назвали їх - бази даних - це дійсно важлива технологія для прогресу людської цивілізації. Сьогодні ми можемо побачити, наскільки цінними є дані , і тому збереження їх у безпеці та стабільності - це те, де база даних надходить!
Тож ми бачимо, наскільки важливі також бази даних. Довгий час я думав створити власну базу даних іграшок, щоб просто зрозуміти, пограти та експериментувати з нею. Як сказав Річард Фейнман :
"Що я не можу створити, я не розумію".Тож без зайвих розмов давайте перейдемо до найцікавішої частини: кодування.
Почнемо кодування ...
Для цієї бази даних іграшок ми будемо використовувати 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__
функції ми беремо параметр location і замінюємо ~
або ~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
функція: її назва говорить про те, чим вона займається. Він бере із self.db
змінної базу даних в пам’яті (насправді об’єкт JSON) і зберігає її у файлі бази даних! Він повертає 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
Функція полягає у видаленні ключа, а також його значення з бази даних. Спочатку ми переконуємось, що ключ присутній у базі даних. Якщо ні, ми повертаємо False. В іншому випадку ми видаляємо ключ із вбудованою del
функцією, яка автоматично видаляє значення ключа. Далі ми зберігаємо базу даних, і вона повертає false.
Тепер ви можете подумати, а що, якщо я створив велику базу даних і хочу її скинути? Теоретично ми можемо використовувати delete
- але це не практично, а також дуже трудомістко! Отже, ми можемо створити функцію для виконання цього завдання ...
. . . . def resetdb(self): self.db={} self.dumpdb() return True . . . .
Ось функція скидання бази даних resetdb
! Це так просто: по-перше, ми робимо повторне присвоєння нашої бази даних в пам’яті порожнім об’єктом JSON, і це просто зберігає! І це все! Наша база даних тепер знову поголена.
Нарешті ...?
Ось це друзі! Ми створили власну базу даних про іграшки ! ?? Насправді, Fo obarDB - це лише проста демонстрація бази даних. Це як дешева саморобна іграшка: ви можете вдосконалити її як завгодно. Ви також можете додати багато інших функцій відповідно до своїх потреб.
Повне джерело тут? bauripalash / foobardb
Сподіваюся, вам сподобалось! Повідомте мене про ваші пропозиції, ідеї чи помилки, які я зробив у коментарях нижче! ?
Слідувати / пінгувати мене в соціальних мережах? Facebook, Twitter, Instagram
Дякую! До зустрічі!
Якщо вам подобається моя робота (мої статті, історії, програмне забезпечення, дослідження та багато іншого), подумайте, купіть мені каву ☕?