HomeLập trìnhPythonCách bắt đầu...

Cách bắt đầu với Firebase bằng Python


Bài viết này hướng dẫn chi tiết giúp bạn thiết lập cơ sở dữ liệu Firebase và thực hiện các thao tác CRUD đơn giản trên cơ sở dữ liệu đó bằng Python.

Firebase, như bạn có thể biết, là một nền tảng do Google cung cấp để tăng tốc phát triển ứng dụng. Nó cung cấp BaaS hoặc dịch vụ phụ trợ dưới dạng dịch vụ, có nghĩa là Firebase đảm nhận cơ sở hạ tầng đám mây và tất cả các nhu cầu phụ trợ của bạn. Điều này cho phép bạn phát triển và triển khai nhanh hơn.

Firebase cung cấp một số sản phẩm tuyệt vời, chẳng hạn như Cơ sở dữ liệu thời gian thực, Cloud Firestore và Xác thực. Và nó cũng cho phép lưu trữ và cung cấp API cho các tác vụ học máy như nhận dạng văn bản, ghi nhãn hình ảnh, v.v.!

Truy cập trang web của họ được liên kết tại đây và say mê các tùy chọn tuyệt vời có sẵn.

Cách thiết lập cơ sở dữ liệu thời gian thực Firebase

Tạo một dự án mới trên Firebase – hãy đặt tên cho nó là BookStoreProject. Khi nó đã được thiết lập, hãy tạo Cơ sở dữ liệu thời gian thực bằng cách chọn tùy chọn Tạo cơ sở dữ liệu.

pic-1
Tạo cơ sở dữ liệu thời gian thực bằng bảng điều khiển Firebase

Khi bạn nhấp vào Tạo cơ sở dữ liệu, bạn phải chỉ định vị trí của cơ sở dữ liệu và các quy tắc bảo mật. Hai quy tắc có sẵn:

  • chế độ bị khóa, từ chối tất cả các lần đọc và ghi vào cơ sở dữ liệu, và
  • chế độ thử nghiệm, cho phép truy cập đọc và ghi trong 30 ngày mặc định (sau đó, tất cả hoạt động đọc và ghi đều bị từ chối trừ khi các quy tắc bảo mật được cập nhật).

Vì chúng tôi sẽ sử dụng cơ sở dữ liệu để đọc, viết và chỉnh sửa nên chúng tôi chọn chế độ thử nghiệm. Khi đã xong, cơ sở dữ liệu đã sẵn sàng để chúng ta sử dụng!

Đọc thêm  Các ví dụ về NamedTuple trong Python – Cách tạo và làm việc với NamedTuples

Cách ghi vào cơ sở dữ liệu thời gian thực Firebase bằng Python

Bước tiếp theo ngay lập tức là tìm hiểu cách chúng tôi có thể kết nối với cơ sở dữ liệu của mình bằng Python. Chúng tôi sẽ sử dụng API cơ sở dữ liệu quản trị viên. Bạn sẽ cần cài đặt thư viện cần thiết.

Để biết thêm thông tin về cách sử dụng firebase_admin đối với Python, hãy xem các tài liệu chính thức được liên kết tại đây.

pip install firebase_admin

Để kết nối với Firebase, chúng tôi cần các dòng mã sau:

import firebase_admin

cred_obj = firebase_admin.credentials.Certificate('....path to file')
default_app = firebase_admin.initialize_app(cred_object, {
	'databaseURL':databaseURL
	})

Tuy nhiên, để làm cho mã hoạt động, chúng tôi cần một số điều kiện tiên quyết.

Trước tiên, chúng tôi cần chỉ định đường dẫn đến khóa Tài khoản dịch vụ sẽ được sử dụng để khởi chạy SDK quản trị.

Firebase sẽ cho phép truy cập API máy chủ Firebase từ Tài khoản dịch vụ của Google. Để xác thực Tài khoản dịch vụ, chúng tôi yêu cầu khóa riêng ở định dạng JSON.

Đường dẫn đến tệp JSON này phải được cung cấp để tạo đối tượng thông tin xác thực. Để tạo khóa, hãy đi tới cài đặt dự án, nhấp vào Tạo khóa riêng mới, tải tệp xuống và đặt tệp vào cấu trúc thư mục của bạn.

hình ảnh-205
Cài đặt dự án trên Bảng điều khiển Firebase

Để được giải thích sâu hơn về quy trình này, hãy tham khảo các tài liệu chính thức được liên kết tại đây.

Tiếp theo, chúng tôi cần cơ sở dữ liệuURL, đơn giản là URL cấp quyền truy cập vào cơ sở dữ liệu của chúng tôi. Nó hiện diện trên chính trang Bảng điều khiển cơ sở dữ liệu cơ sở dữ liệu thời gian thực.

Cách Viết Sử dụng Hàm set()

from firebase_admin import db

ref = db.reference("/")

Chúng tôi đặt tham chiếu tới thư mục gốc của cơ sở dữ liệu (hoặc chúng tôi cũng có thể đặt nó thành giá trị khóa hoặc giá trị khóa con). Câu hỏi đặt ra một cách tự nhiên là lược đồ nào được phép lưu trữ dữ liệu trong cơ sở dữ liệu Thời gian thực?

Tất cả dữ liệu được lưu trữ phải ở định dạng JSON, tức là một chuỗi các cặp giá trị khóa. Nếu bạn cần khóa do hệ thống tạo, bạn có thể chọn sử dụng push() chức năng mà chúng tôi sẽ đề cập ngay sau đây.

Đọc thêm  Hướng dẫn Python tốt nhất

Hãy xây dựng một JSON phù hợp có thể được lưu trong cơ sở dữ liệu. Chúng tôi có thông tin liên quan đến bốn cuốn sách như sau:

{
	"Book1":
	{
		"Title": "The Fellowship of the Ring",
		"Author": "J.R.R. Tolkien",
		"Genre": "Epic fantasy",
		"Price": 100
	},
	"Book2":
	{
		"Title": "The Two Towers",
		"Author": "J.R.R. Tolkien",
		"Genre": "Epic fantasy",
		"Price": 100	
	},
	"Book3":
	{
		"Title": "The Return of the King",
		"Author": "J.R.R. Tolkien",
		"Genre": "Epic fantasy",
		"Price": 100
	},
	"Book4":
	{
		"Title": "Brida",
		"Author": "Paulo Coelho",
		"Genre": "Fiction",
		"Price": 100
	}
}

Chúng tôi tải tệp JSON được yêu cầu và lưu dữ liệu vào cơ sở dữ liệu như thế này:

import json
with open("book_info.json", "r") as f:
	file_contents = json.load(f)
ref.set(file_contents)

Cơ sở dữ liệu bây giờ trông như thế này:

hình ảnh-207
Lược đồ cơ sở dữ liệu được xem từ Bảng điều khiển Firebase

Cách viết bằng hàm push()

Firebase cung cấp cho chúng tôi push() chức năng lưu dữ liệu theo một khóa duy nhất do hệ thống tạo. Phương pháp này đảm bảo rằng nếu nhiều lần ghi đang được thực hiện cho cùng một khóa, chúng sẽ không ghi đè lên chính chúng.

Ví dụ: nếu nhiều nguồn cố gắng ghi tại /Books/Best_Sellers/ thì bất kỳ nguồn nào thực hiện ghi cuối cùng, giá trị đó sẽ tồn tại trong cơ sở dữ liệu. Điều này giới thiệu khả năng dữ liệu sẽ bị ghi đè. push() giải quyết vấn đề này bằng cách sử dụng các khóa duy nhất cho mỗi phần tử con mới được thêm vào.

ref = db.reference("/")
ref.set({
	"Books":
	{
		"Best_Sellers": -1
	}
})

ref = db.reference("/Books/Best_Sellers")
import json
with open("book_info.json", "r") as f:
	file_contents = json.load(f)

for key, value in file_contents.items():
	ref.push().set(value)
hình ảnh-208
Lược đồ cơ sở dữ liệu sau khi thực hiện phương thức push()

xin lưu ý rằng push()set() không phải là nguyên tử. Điều này có nghĩa là không có gì đảm bảo rằng cả hai chức năng sẽ thực hiện cùng nhau mà không bị gián đoạn như một đơn vị không thể chia cắt.

Trong khi cơ sở dữ liệu đang được cập nhật, nếu chúng tôi cố gắng tìm nạp dữ liệu, điều đó có thể xảy ra push() đã hoàn thành nhưng set() chưa – vì vậy JSON mà chúng tôi nhận được sẽ có khóa do hệ thống tạo mà không có trường giá trị.

Cách cập nhật cơ sở dữ liệu Firebase của bạn bằng Python

Cập nhật cơ sở dữ liệu đơn giản như đặt tham chiếu tại điểm cần thiết và sử dụng update() chức năng. Giả sử giá sách của JRR Tolkien giảm xuống còn 80 đơn vị để giảm giá.

ref = db.reference("/Books/Best_Sellers/")
best_sellers = ref.get()
print(best_sellers)
for key, value in best_sellers.items():
	if(value["Author"] == "J.R.R. Tolkien"):
		value["Price"] = 90
		ref.child(key).update({"Price":80})
        
        
hình ảnh-209
Lược đồ cơ sở dữ liệu sau khi sử dụng hàm update()

Cách lấy dữ liệu từ Firebase bằng Python

Chúng tôi đã truy xuất dữ liệu bằng cách sử dụng get() khi chúng tôi đang cố cập nhật một khóa cụ thể. Bây giờ chúng ta sẽ xem thêm một vài phương pháp và ghép chúng lại với nhau để thực hiện các truy vấn phức tạp.

Đọc thêm  Danh sách duy nhất của Python – Cách lấy tất cả các giá trị duy nhất trong danh sách hoặc mảng

Hãy sắp xếp tất cả các cuốn sách theo giá bằng cách sử dụng order_by_child() phương pháp. Để áp dụng phương pháp này, trước tiên chúng tôi phải đặt khóa mà chúng tôi sắp xếp thứ tự làm trường chỉ mục thông qua .indexOn quy tắc trong Quy tắc bảo mật Firebase.

Nếu chúng ta muốn sắp xếp theo giá, thì giá phải được liệt kê dưới dạng chỉ mục. Bạn có thể đặt giá trị như thế này:

hình ảnh-210
Chuyển đến tab Quy tắc và nhập cấu trúc lược đồ mà bạn muốn đặt chỉ mục
ref = db.reference("/Books/Best_Sellers/")
print(ref.order_by_child("Price").get())

Giá trị trả về của phương thức là một OrderedDict. Để đặt hàng theo khóa, hãy sử dụng order_by_key(). Để có được cuốn sách với giá tối đa, chúng tôi sử dụng limit_to_last() phương pháp như sau:

ref.order_by_child("Price").limit_to_last(1).get()

Ngoài ra, để có được cuốn sách có giá thấp nhất, chúng tôi viết:

ref.order_by_child("Price").limit_to_first(1).get()

Để có được những cuốn sách có giá chính xác là 80 đơn vị, chúng tôi sử dụng:

ref.order_by_child("Price").equal_to(80).get()

Để biết thêm ví dụ và phương pháp truy vấn cơ sở dữ liệu theo yêu cầu của bạn, hãy xem tài liệu chính thức tại đây.

Cách xóa dữ liệu khỏi Firebase bằng Python

Xóa dữ liệu khá đơn giản. Hãy xóa tất cả những cuốn sách bán chạy nhất với JRR Tolkien là tác giả.

ref = db.reference("/Books/Best_Sellers")

for key, value in best_sellers.items():
	if(value["Author"] == "J.R.R. Tolkien"):
		ref.child(key).set({})
        
        
hinh-211
Lược đồ cơ sở dữ liệu sau khi xóa

Phần kết luận

Trong bài đăng này, chúng tôi đã tìm hiểu cách tạo cơ sở dữ liệu Thời gian thực Firebase, điền dữ liệu vào đó và xóa, cập nhật và truy vấn dữ liệu bằng Python.

Tôi hy vọng điều này sẽ giúp ích cho nhà phát triển Python ngoài kia, những người vừa khám phá ra vẻ đẹp của Firebase nhưng đang cảm thấy choáng ngợp với rất nhiều tùy chọn và phương pháp khác nhau để lựa chọn. Nếu bạn đã đọc đến đây, cảm ơn bạn rất nhiều! Hãy cẩn thận và viết mã vui vẻ!



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