MongoDB có thể lưu trữ các đối tượng Python không?

Tôi là người mới sử dụng Python và tôi đang viết một lớp Python đại diện cho một mục lịch, mỗi mục chứa 2 thuộc tính. ngày và loại ngày, có thể là ngày trong tuần/cuối tuần/ngày lễ hợp pháp/ngày nghỉ có lương/ngày nghỉ không lương. Các đối tượng có thể được tuần tự hóa thành định dạng JSON, được lưu vào bộ sưu tập MongoDB và được tải lại vào bộ nhớ

Việc tuần tự hóa và giải tuần tự hóa được thực hiện với Marshmallow. Vấn đề là MongoDB sử dụng trường _id làm khóa chính, nhưng tôi muốn tạo khóa chính cho thuộc tính lớp entry_date, vì vậy tôi phải thực hiện thủ công bằng cách thêm dòng. serialized['_id'] = serialized['entry_date']

Đây là mã nguồn hoàn chỉnh

#!/usr/bin/python
# -*- coding: utf-8 -*-

from marshmallow import Schema, fields, post_load
from pymongo import MongoClient
from datetime import date

ENTRY_WEEKDAY = 0
ENTRY_WEEKEND = 1
ENTRY_LEGAL_HOLIDAY = 2
ENTRY_PAID_HOLIDAY = 3
ENTRY_UNPAID_HOLIDAY = 4


class CalendarEntry[object]:
    def __init__[self, entry_date, entry_type]:
        self.entry_date = entry_date

        iso_format = self.entry_date.isoformat[]

        if self.entry_date.weekday[] in range[5] and entry_type == ENTRY_WEEKDAY:
            raise ValueError['{0} is already a weekday.'.format[iso_format]]
        else:
            if entry_type == ENTRY_WEEKEND:
                raise ValueError['{0} is already a weekend day.'.format[iso_format]]
            elif entry_type == ENTRY_UNPAID_HOLIDAY:
                raise ValueError['{0} is a weekend day, cannot be an unpaid holiday.'.format[iso_format]]

        self.entry_type = entry_type

    def __getattribute__[self, item]:
        if item == 'year':
            return object.__getattribute__[self, 'entry_date'].year
        elif item == 'month':
            return object.__getattribute__[self, 'entry_date'].month
        elif item == 'day':
            return object.__getattribute__[self, 'entry_date'].day
        return object.__getattribute__[self, item]

    def serialize[self]:
        schema = CalendarEntrySchema[]
        output = schema.dump[self]
        return output.data

    @classmethod
    def make_instance[cls, data]:
        schema = CalendarEntrySchema[]
        result = schema.load[data]
        return result.data


class CalendarEntrySchema[Schema]:
    entry_date = fields.Date[required=True]
    entry_type = fields.Integer[required=True]

    @post_load
    def make_entry[self, data]:
        return CalendarEntry[**data]


if __name__ == '__main__':
    entry = CalendarEntry[date[2018, 1, 14], ENTRY_WEEKDAY]
    serialized = entry.serialize[]
    print 'Serialized:', serialized

    # Manually add _id field for MongoDB.
    serialized['_id'] = serialized['entry_date']
    print 'Serialized with _id:', serialized

    clnt = MongoClient[]
    collection = clnt.hrm.calendar_setting
    result = collection.insert_one[serialized]
    print 'Entry saved, inserted ID:', result.inserted_id

Đầu ra

Serialized: {u'entry_type': 0, u'entry_date': '2018-01-14'}
Serialized with _id: {u'entry_type': 0, '_id': '2018-01-14', u'entry_date': '2018-01-14'}

Mã hoạt động, nhưng với các trường trùng lặp, _identry_date chứa chính xác cùng một giá trị

Bất kỳ đề nghị và phê bình xin vui lòng?

Như chúng ta biết khi đào tạo các mô hình học máy hoặc học sâu, chúng ta phải lưu các mô hình đã đào tạo để dự đoán trong tương lai. Tiết kiệm các mô hình học máy có nghĩa là tiết kiệm trí thông minh được tạo ra để đáp ứng nhu cầu của doanh nghiệp. Các mô hình đào tạo ngày nay rất đắt đỏ, vì vậy nếu chúng ta có thể lưu chúng và sử dụng lại trí thông minh đó để giải quyết một số vấn đề khác thì còn được gọi là học chuyển giao. Ví dụ: một mạng thần kinh được đào tạo có thể nhận dạng ô tô có thể được sử dụng để xác định xe tải sau khi tinh chỉnh nó bằng phương pháp học chuyển giao

Lưu các mô hình trong cơ sở dữ liệu và tải chúng bằng python thật dễ dàng. Chúng tôi chọn MongoDB vì nó là cơ sở dữ liệu tài liệu mã nguồn mở và cơ sở dữ liệu NoSQL hàng đầu. Bây giờ, hãy thực hiện từng bước này bằng python

Đầu tiên, cài đặt pymongo bằng pip như hình bên dưới,

pip cài đặt pymongo

Đảm bảo rằng bạn đã cài đặt MongoDB trong hệ thống của mình nếu bạn muốn cài đặt nó, hãy nhấp vào đây

Trước tiên, chúng tôi sẽ đào tạo mô hình xgboost trên bộ dữ liệu iris, sau đó kết xuất nó vào cơ sở dữ liệu và tải lại và sử dụng nó để dự đoán. Nhập các thư viện quan trọng như hình bên dưới

Bây giờ chúng tôi sẽ đào tạo xgboost trên bộ dữ liệu iris

Sau khi đào tạo, chúng tôi sẽ viết một hàm trợ giúp để lưu mô hình, trước tiên sẽ chọn mô hình. Pickling chỉ chuyển đổi bất kỳ đối tượng nào thành byte. Chúng tôi phải chọn mô hình của mình vì chúng tôi không thể lưu các đối tượng trực tiếp vào MongoDB. Chức năng này cũng tạo một kết nối, cơ sở dữ liệu và bộ sưu tập và sau đó lưu mô hình với tên

Bây giờ chúng ta sẽ viết một hàm trợ giúp khác để tải mô hình đã lưu. Trước tiên, chức năng này mở khóa mô hình đã lưu và sau đó trả về mô hình. Ở đây, chúng tôi đang sử dụng hàm find[] và chuyển tên mô hình của nó để tìm nạp mô hình từ cơ sở dữ liệu

Sau khi viết các hàm trợ giúp để lưu và tải mô hình, chúng ta chỉ cần gọi chúng như hình bên dưới

Vì vậy, việc lưu và tải mô hình trong cơ sở dữ liệu thật dễ dàng bằng python. Sau khi lưu các mô hình này, chúng tôi có thể sử dụng chúng trong tương lai bất cứ khi nào chúng tôi muốn. Đối với máy tính xách tay đầy đủ bấm vào đây. Nếu bạn thấy bài viết này hữu ích, hãy vỗ tay hoặc phản hồi, hẹn gặp lại bạn trong blog tiếp theo cho đến khi học tập vui vẻ

MongoDB có tương thích với Python không?

MongoDB là cơ sở dữ liệu hướng tài liệu được phân loại là NoSQL. Nó đã trở nên phổ biến trong toàn ngành trong những năm gần đây và tích hợp cực kỳ tốt với Python . Không giống như các RDBMS SQL truyền thống, MongoDB sử dụng các tập tài liệu thay vì các bảng hàng để tổ chức và lưu trữ dữ liệu.

MongoDB có thể lưu trữ các đối tượng không?

MongoDB cũng rất linh hoạt vì đây là cơ sở dữ liệu NoSQL, vì vậy các đối tượng có thể được lưu trữ cùng nhau ngay cả khi chúng có cấu trúc hoàn toàn khác .

Python lưu trữ dữ liệu trong MongoDB như thế nào?

Để chèn một bản ghi hoặc tài liệu như cách gọi của nó trong MongoDB, vào một bộ sưu tập, chúng ta sử dụng phương thức insert_one[] . Tham số đầu tiên của phương thức insert_one[] là một từ điển chứa [các] tên và [các] giá trị của từng trường trong tài liệu mà bạn muốn chèn.

Python tích hợp với MongoDB như thế nào?

Để kết nối với MongoDB từ Ứng dụng Python, hãy làm theo hướng dẫn từng bước bên dưới. .
Cài đặt trình điều khiển Python – PyMongo. PyMongo chứa các công cụ để làm việc với MongoDB. .
Nhập MongoClient từ pymongo. .
Tạo kết nối đến MongoDB Daemon Service bằng MongoClient. .
MongoClient đã sẵn sàng. .
Đóng kết nối với MongoDB

Chủ Đề