HomeLập trìnhPythonCách viết cơ...

Cách viết cơ sở dữ liệu đồ chơi đơn giản bằng Python trong vòng vài phút


MySQL, PostgreSQL, Oracle, Redis, v.v., bạn chỉ cần đặt tên cho nó — cơ sở dữ liệu là một phần công nghệ thực sự quan trọng trong quá trình phát triển của nền văn minh nhân loại. Hôm nay chúng ta có thể thấy giá trị như thế nào dữ liệu và vì vậy giữ cho chúng an toàn và ổn định là nơi cơ sở dữ liệu xuất hiện!

Vì vậy, chúng ta có thể thấy cơ sở dữ liệu quan trọng như thế nào. Trong một thời gian khá lâu, tôi đã nghĩ đến việc tạo Cơ sở dữ liệu đồ chơi của riêng mình chỉ để hiểu, chơi và thử nghiệm với nó. Như Richard Feynman nói:

“Những gì tôi không thể tạo ra, tôi không hiểu.”

Vì vậy, không cần nói thêm nữa, hãy chuyển sang phần thú vị: viết mã.

Hãy bắt đầu viết mã…

Đối với Cơ sở dữ liệu đồ chơi này, chúng tôi sẽ sử dụng con trăn (yêu thích của tôi ❤️). Tôi đặt tên cho cơ sở dữ liệu này FooBarDB (Tôi không thể tìm thấy bất kỳ tên nào khác ?), nhưng bạn có thể gọi nó là gì bạn muốn!

Vì vậy, trước tiên hãy nhập một số thư viện Python cần thiết đã có sẵn trong Thư viện chuẩn Python:

import json
import os

Vâng, chúng tôi chỉ cần hai thư viện này! Chúng tôi cần json vì cơ sở dữ liệu của chúng tôi sẽ dựa trên JSON và os đối với một số nội dung liên quan đến đường dẫn.

Bây giờ hãy xác định lớp chính FoobarDB với một số chức năng khá cơ bản mà tôi sẽ giải thích bên dưới.

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

Ở đây chúng tôi đã định nghĩa lớp chính của mình bằng một __init__ chức năng. Bất cứ khi nào tạo Cơ sở dữ liệu Foobar, chúng ta chỉ cần chuyển vị trí của cơ sở dữ liệu. Trước hết __init__ chức năng chúng tôi lấy tham số vị trí và thay thế ~ hoặc ~user với thư mục chính của người dùng để làm cho nó hoạt động theo cách đã định. Và cuối cùng, đặt nó vào self.location biến để truy cập nó sau này trên các chức năng cùng lớp. Cuối cùng, chúng tôi đang gọi load truyền chức năng self.location như một lý lẽ.

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

Ở phần tiếp theo load chức năng chúng tôi lấy vị trí của cơ sở dữ liệu làm tham số. Sau đó kiểm tra xem cơ sở dữ liệu có tồn tại hay không. Nếu nó tồn tại, chúng tôi tải nó với _load() chức năng (giải thích bên dưới). Mặt khác, chúng tôi tạo một đối tượng JSON trống trong bộ nhớ. Và cuối cùng, trả về true khi thành công.

. . . . 

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

bên trong _load chức năng, chúng tôi chỉ cần mở tệp cơ sở dữ liệu từ vị trí được lưu trữ trong self.location. Sau đó, chúng tôi chuyển đổi nó thành một đối tượng JSON và tải nó vào self.db Biến đổi.

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

. . . .

Và cuối cùng, các dumpdb chức năng: tên của nó nói những gì nó làm. Nó lấy cơ sở dữ liệu trong bộ nhớ (thực ra là một đối tượng JSON) từ self.db biến và lưu nó trong tệp cơ sở dữ liệu! Nó trở lại Thật nếu lưu thành công, ngược lại trả về Sai.

Đọc thêm  Mô-đun datetime của Python – Cách xử lý ngày tháng trong Python

Làm cho nó khả dụng hơn một chút…?

Đợi tí! ? Cơ sở dữ liệu là vô ích nếu nó không thể lưu trữ và truy xuất dữ liệu, phải không? Hãy đi và thêm chúng nữa…?

. . . .
    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
. . . .

Các set chức năng là thêm dữ liệu vào cơ sở dữ liệu. Vì cơ sở dữ liệu của chúng tôi là cơ sở dữ liệu dựa trên khóa-giá trị đơn giản, chúng tôi sẽ chỉ mất một keyvalue như một lý lẽ.

Đầu tiên, chúng ta sẽ thử thêm khóa và giá trị vào cơ sở dữ liệu, sau đó lưu cơ sở dữ liệu. Nếu mọi thứ suôn sẻ, nó sẽ trả về True. Nếu không, nó sẽ in một thông báo lỗi và trả về Sai. (Chúng tôi không muốn nó bị sập và xóa dữ liệu của chúng tôi mỗi khi xảy ra lỗi?).

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

get là một hàm đơn giản, chúng ta lấy key làm đối số và cố gắng trả về giá trị được liên kết với khóa từ cơ sở dữ liệu. Nếu không, Sai được trả về bằng một tin nhắn.

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

. . . .

delete chức năng là xóa một khóa cũng như giá trị của nó khỏi cơ sở dữ liệu. Trước tiên, chúng tôi đảm bảo rằng khóa có trong cơ sở dữ liệu. Nếu không, chúng tôi trả về Sai. Nếu không, chúng tôi xóa khóa có tích hợp del tự động xóa giá trị của khóa. Tiếp theo, chúng tôi lưu cơ sở dữ liệu và nó trả về false.

Đọc thêm  Cách gửi tệp bằng Python

Bây giờ bạn có thể nghĩ, nếu tôi đã tạo một cơ sở dữ liệu lớn và muốn thiết lập lại nó thì sao? Về lý thuyết, chúng ta có thể sử dụng delete — nhưng nó không thực tế và cũng rất tốn thời gian! ⏳ Để chúng ta có thể tạo một hàm để thực hiện tác vụ này…

. . . . 

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

Đây là chức năng để thiết lập lại cơ sở dữ liệu, resetdb! Rất đơn giản: đầu tiên, những gì chúng tôi làm là gán lại cơ sở dữ liệu trong bộ nhớ của chúng tôi với một đối tượng JSON trống và nó chỉ lưu nó! Và thế là xong! Cơ sở dữ liệu của chúng tôi hiện đã được cạo sạch sẽ một lần nữa.

Cuối cùng… ?

Đó là nó bạn bè! Chúng tôi đã tạo ra của riêng mình Cơ sở dữ liệu đồ chơi ! ?? Trên thực tế, FoobarDB tôiđó chỉ là một bản demo đơn giản của cơ sở dữ liệu. Nó giống như một món đồ chơi DIY rẻ tiền: bạn có thể cải thiện nó theo bất kỳ cách nào bạn muốn. Bạn cũng có thể thêm nhiều chức năng khác theo nhu cầu của mình.

Nguồn đầy đủ là ở đây? bauripalash / foobardb

Tôi hy vọng bạn thích nó! Hãy cho tôi biết các đề xuất, ý tưởng hoặc sai lầm của bạn mà tôi đã mắc phải trong phần bình luận bên dưới! ?

Đọc thêm  Các khóa học Python dành cho người mới bắt đầu được xếp hạng từ tốt nhất đến tệ nhất – phiên bản freeCodeCamp

Theo dõi/ping tôi trên mạng xã hội? Facebook, T.người khôn ngoan, Instagram

Cảm ơn bạn! Hẹn sớm gặp lại!


Nếu bạn thích công việc của tôi (Các bài báo, câu chuyện, phần mềm, nghiên cứu của tôi và nhiều thứ khác) Hãy cân nhắc mua cho tôi một ly cà phê ☕ ?





Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status