Khi bạn làm việc trên một dự án cơ sở dữ liệu MongoDB, điều quan trọng là phải xác minh rằng cổng và tên miền của bạn là chính xác. Cài đặt sai và không nhận ra ngay lập tức có thể nhanh chóng dẫn đến năng suất bị chậm lại và gia tăng sự thất vọng. Hướng dẫn này chỉ cho bạn cách kiểm tra máy chủ MongoDB đang chạy PyMongo Python để phát sinh ngoại lệ nếu máy chủ không kết nối. Bạn được hưởng lợi khi có thể sửa cài đặt và thực hiện lệnh gọi API phương thức mà không cần do dự thêm
Nếu bạn biết các bước và muốn bỏ qua các chi tiết của hướng dẫn này, hãy bỏ qua phần Chỉ Mã
điều kiện tiên quyết
Cài đặt ứng dụng cơ sở dữ liệu MongoDB
Cài đặt PyMongo, trình điều khiển Python cho MongoDB. Bạn nên sử dụng PIP3 để cài đặt PyMongo như thế này
Sử dụng Giao diện người dùng đồ họa la bàn MongoDB (GUI) để thử tạo kết nối máy chủ
- Cố gắng kết nối với máy chủ bằng GUI MongoDB Compass nếu bạn có ứng dụng. Bạn sẽ cho biết tên miền và cổng mà bạn đang cố gắng kết nối
- Nếu thất bại, bạn sẽ thấy một thông báo tương tự như thế này
MongoDB không chạy trên máy chủ và cổng được cung cấp
Tại sao MongoDB không tăng ngoại lệ một cách tự nhiên
MongoDB là một cơ sở dữ liệu tài liệu mạnh mẽ tập trung vào khả năng tìm kiếm và truy xuất tài liệu. Tăng ngoại lệ không phải là ưu tiên cao nhất. Nhưng điều đó sẽ ổn thôi vì những gì MongoDB cung cấp vượt xa cách nó xử lý các ngoại lệ
Khi MongoClient() nhận được cài đặt của cổng và tên miền và chúng không giống với máy chủ, một ngoại lệ sẽ không tự động được đưa ra. Tin tốt là có nhiều cách để giải quyết vấn đề này để việc mã hóa của bạn ít nhất không bị cản trở
Đưa ra một ngoại lệ với phương thức đối tượng máy khách server_info()
- Phương thức server_info() của đối tượng máy khách có thể được gọi khi MongoDB trả về một phiên bản máy khách. Bạn đang xác minh rằng phiên bản này là chính hãng
khách hàng = MongoClient (máy chủ = ["máy chủ cục bộ. 1111"])
khách hàng. server_info()
- Một ngoại lệ ServerSelectionTimeoutError được hiển thị khi cài đặt chuỗi cổng và tên miền bị sai
- Phương pháp của MongoClient() cho thời gian chờ mà bạn sẽ đặt được gọi là serverSelectionTimeoutMS. tính bằng mili giây là giá trị số nguyên vì nó mô tả cài đặt thời gian chờ lệnh gọi API
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
từ pymongo nhập MongoClient
thời gian nhập khẩu
# epoch thời gian trước lệnh gọi API
bắt đầu = thời gian. thời gian()
cố gắng
# cố gắng tạo phiên bản máy khách của trình điều khiển PyMongo
khách hàng = MongoClient (máy chủ = ["máy chủ cục bộ. 1111"], serverSelectionTimeoutMS = 2000)
# gọi server_info() để xác minh rằng phiên bản máy khách hợp lệ
khách hàng. server_info() # sẽ đưa ra một ngoại lệ
ngoại trừ
in ("lỗi kết nối")
# in thời gian đã trôi qua
in (thời gian. Thời gian bắt đầu)
Đoạn mã trên dừng lệnh gọi API để kết nối với MongoDB sau một vài giây đã trôi qua và đưa ra một ngoại lệ
>LƯU Ý. Ba mươi giây là thời gian chờ mặc định nếu bạn không đặt số nguyên thời gian chờ của phương thức serverSelectionTimeoutMS
Thực hiện nhập các gói Python của trình điều khiển PyMongo
- Lỗi kết nối máy chủ được phát hiện khi bạn nhập phương thức MongoClient và thư viện pymongo.errors
# nhập thư viện lớp MongoClient
từ pymongo nhập MongoClient, lỗi
Khai báo hàm Python để sử dụng PyMongo để kết nối
- Phiên bản ứng dụng khách MongoClient sẽ được trả về khi bạn sử dụng chức năng def để thử tạo kết nối máy chủ MongoDB
def mongodb_connect(tên miền, cổng)
Tạo một chuỗi để nối các tham số của cổng và miền
# tạo miền và chuỗi cổng cho máy chủ MongoDB
domain_str = str(tên miền) + ". " + str(cổng)
Sử dụng chuỗi máy chủ để tạo phiên bản ứng dụng khách MongoClient()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cố gắng
# in cổng và tên miền để kết nối với
print("nĐang cố gắng kết nối với máy chủ MongoDB. ", tên miền," trên cổng. ", Hải cảng)
# kết nối với máy chủ MongoDB không tồn tại
khách hàng = MongoClient (
máy chủ = [tên miền_str],
# thời gian chờ tính bằng mili giây
máy chủSelectionTimeoutMS = 2000
)
Xác định xem cài đặt kết nối có hợp lệ không
- Gọi phương thức server_info() của phiên bản máy khách để kiểm tra máy chủ MongoDB đang chạy Pymongo Python với ngoại lệ có tên là ServerSelectionTimeoutError. Sử dụng thử ngoại trừ thụt đầu dòng
# server_info() sẽ tăng ngoại lệ nếu cài đặt máy chủ không hợp lệ
in ("máy chủ_thông tin(). ", khách hàng. server_info())
ngoại trừ lỗi. ServerSelectionTimeoutError là lỗi
# bắt pymongo. lỗi. ServerSelectionTimeoutError
in ("lỗi pymongo. ", sai)
# đặt phiên bản máy khách thành Không có trong trường hợp lỗi kết nối
khách hàng = Không có
trả lại khách hàng
- Nếu kết nối không thành công, đối tượng cũ của phiên bản máy khách sẽ chuyển đổi thành đối tượng server_info()2
Chạy thử nghiệm bằng cách vượt qua một số cài đặt để AttributeError xuất hiện
- Cố ý làm cho kết nối không thành công để kiểm tra khả năng nhận biết kết nối không thành công của chức năng
>LƯU Ý. Để đưa ra các ngoại lệ, đối tượng server_info()2 không có cùng thuộc tính của MongoDB như đối tượng server_info()4. Đây là lý do tại sao server_info()4 được đề xuất
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# gọi hàm mongodb_connect()
client = mongodb_connect("localhost", 1111)
in ("khách hàng. ", khách hàng)
# sử dụng khối thử ngoại trừ khi lấy cơ sở dữ liệu/bộ sưu tập
cố gắng
# tạo cơ sở dữ liệu mới và phiên bản bộ sưu tập
db = khách hàng. Một sốCơ sở dữ liệu
col = db["Một số Bộ sưu tập"]
ngoại trừ AttributeError là lỗi
# nên tăng AttributeError nếu hàm mongodb_connect() trả về "None"
print("Nhận cơ sở dữ liệu MongoDB và bộ sưu tập LỖI. ", lỗi)
Phân tích phiên bản máy khách của PyMongo
- Xác minh kết nối bằng cách sử dụng câu lệnh server_info()6 để phân tích xem có phiên bản ứng dụng khách server_info()7 hay không để kiểm tra máy chủ MongoDB đang chạy PyMongo Python
# hoặc đánh giá đối tượng khách hàng thay thế
nếu khách hàng. = Không có
# tạo cơ sở dữ liệu mới và phiên bản bộ sưu tập
db = khách hàng. Một sốCơ sở dữ liệu
col = db["Một số Bộ sưu tập"]
khác
print ("Phiên bản máy khách không hợp lệ")
- Là một phương pháp thay thế cho phương pháp server_info(), xác định lỗi bằng khối thụt đầu dòng thử-ngoại trừ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# kết nối với máy chủ MongoDB không tồn tại
khách hàng = MongoClient (
máy chủ = ["DOES_NOT_EXIST"],
# thời gian chờ tính bằng mili giây
máy chủSelectionTimeoutMS = 2000
)
print ("nTạo cơ sở dữ liệu và biểu mẫu thu thập phiên bản máy khách 'xấu'")
# tạo cơ sở dữ liệu mới và phiên bản bộ sưu tập
db = khách hàng. Một sốCơ sở dữ liệu
col = db["Một số Bộ sưu tập"]
# thử thực hiện lệnh gọi phương thức find_one() tới bộ sưu tập
cố gắng
one_doc=col. tìm một()
in ("nfind_one(). ", one_doc)
ngoại trừ lỗi. ServerSelectionTimeoutError là lỗi
in ("nfind_one() LỖI. ", sai)
Phần kết luận
Hướng dẫn này giải thích nhiều cách khác nhau để kiểm tra máy chủ MongoDB đang chạy PyMongo Python. Trong đó, bạn đã học cách cố tình đưa ra các ngoại lệ để xác minh rằng kết nối không thành công. Bạn cũng đã khám phá ra cách xác nhận kết nối máy chủ MongoDB hợp lệ
Khi kết nối thành công, cài đặt cổng và miền chính xác đã được chỉ định. Thật tốt khi biết rằng bạn có thể xác minh cài đặt kết nối của mình theo nhiều cách khác nhau. Bây giờ bạn có thể chọn phương pháp nào phù hợp nhất với mình và cũng có một số kỹ thuật sao lưu để chọn