Tôi không thể tìm thấy bất kỳ thông tin nào về việc kết nối với MongoDB trong các tài liệu của SQLalchemy và Google Search.
Có thể sử dụng MongoDB với sqlalchemy? Cảm ơn.
Khi được hỏi ngày 23 tháng 5 năm 2016 lúc 9:25May 23, 2016 at 9:25
1
Theo SQL Alchem Desc, bạn không thể sử dụng nó:
SQLalchemy coi cơ sở dữ liệu là một công cụ đại số quan hệ, không chỉ là một tập hợp các bảng. Hàng có thể được chọn từ không chỉ các bảng mà còn tham gia và các câu lệnh chọn khác; Bất kỳ đơn vị nào trong số này có thể được sáng tác thành một cấu trúc lớn hơn. Ngôn ngữ biểu thức của SQLalchemy dựa trên khái niệm này từ cốt lõi của nó.
SQLalchemy nổi tiếng nhất với bản đồ liên quan đến đối tượng [ORM], một thành phần tùy chọn cung cấp mẫu Mapper Data, trong đó các lớp có thể được ánh xạ vào cơ sở dữ liệu theo kết thúc mở, nhiều cách - cho phép mô hình đối tượng và lược đồ cơ sở dữ liệu phát triển trong một cách tách biệt rõ ràng từ đầu.
Mục tiêu chính của SQLalchemy là thay đổi cách bạn nghĩ về cơ sở dữ liệu và SQL!
Đã trả lời ngày 23 tháng 5 năm 2016 lúc 9:41May 23, 2016 at 9:41
profesor79profesor79profesor79
8.9843 huy hiệu vàng28 Huy hiệu bạc49 Huy hiệu đồng3 gold badges28 silver badges49 bronze badges
Bạn có thể sử dụng Mongoalchemy thay thế.
Đã trả lời ngày 18 tháng 6 năm 2021 lúc 15:18Jun 18, 2021 at 15:18
Thêm thông tin
Đầu nối CDATA Python cho MongoDB cho phép bạn tạo các ứng dụng và tập lệnh Python sử dụng ánh xạ liên quan đến đối tượng SQLalchemy của dữ liệu MongoDB.
Bài viết này chi tiết cách sử dụng sqlalchemy để kết nối với dữ liệu MongoDB để truy vấn, cập nhật, xóa và chèn dữ liệu MongoDB.
Kết nối với dữ liệu MongoDB
Kết nối với dữ liệu MongoDB tương tự như kết nối với bất kỳ cơ sở dữ liệu quan hệ nào khác. Tạo một chuỗi kết nối bằng các thuộc tính kết nối cần thiết. Đối với bài viết này, bạn sẽ chuyển chuỗi kết nối dưới dạng tham số cho hàm created_engine.
Đặt các thuộc tính kết nối máy chủ, cơ sở dữ liệu, người dùng và mật khẩu để kết nối với MongoDB. Để truy cập các bộ sưu tập MongoDB làm bảng, bạn có thể sử dụng Khám phá lược đồ tự động hoặc viết các định nghĩa lược đồ của riêng bạn. Các lược đồ được xác định trong các tệp .rsd, có định dạng đơn giản. Bạn cũng có thể thực hiện các truy vấn dạng tự do không được gắn với lược đồ.
Thực hiện theo quy trình dưới đây để cài đặt SQLalchemy và bắt đầu truy cập MongoDB thông qua các đối tượng Python.
Cài đặt các mô -đun cần thiết
Sử dụng tiện ích PIP để cài đặt bộ công cụ SQLalchemy:
Pip Cài đặt SQLALCHEMY
Đảm bảo nhập mô -đun với các mục sau:
nhập khẩu sqlalchemy sqlalchemy
Mô hình dữ liệu MongoDB trong Python
Bây giờ bạn có thể kết nối với một chuỗi kết nối. Sử dụng chức năng created_engine để tạo một công cụ để làm việc với dữ liệu MongoDB.
động cơ = created_engine [trên mong muốn= create_engine[“mongodb:///?Server=MyServer&;Port=27017&Database=test&User=test&Password=Password”]
Tuyên bố một lớp ánh xạ cho dữ liệu MongoDB
Sau khi thiết lập kết nối, khai báo một lớp ánh xạ cho bảng bạn muốn mô hình hóa trong ORM [trong bài viết này, chúng tôi sẽ mô hình hóa bảng nhà hàng]. Sử dụng sqlalchemy.ext.declarative.declarative_base và tạo một lớp mới với một số hoặc tất cả các trường [cột] được xác định.
cơ sở = khai báo_base []= declarative_base[]
Nhà hàng lớp [cơ sở]: restaurants[base]:
__tablename__ = Nhà hàng ”= “restaurants”
borough = cột [chuỗi, chính_key = true]= Column[String,primary_key=True]
ẩm thực = cột [chuỗi]= Column[String]
…
Truy vấn dữ liệu MongoDB
Với lớp ánh xạ được chuẩn bị, bạn có thể sử dụng đối tượng phiên để truy vấn nguồn dữ liệu. Sau khi ràng buộc động cơ với phiên, cung cấp lớp ánh xạ cho phương thức truy vấn phiên.
Sử dụng phương thức truy vấn
động cơ = created_engine [trên mong muốn= create_engine[“mongodb:///?Server=MyServer&;Port=27017&Database=test&User=test&Password=Password”]
Tuyên bố một lớp ánh xạ cho dữ liệu MongoDB= sessionmaker[bind=engine]
Sau khi thiết lập kết nối, khai báo một lớp ánh xạ cho bảng bạn muốn mô hình hóa trong ORM [trong bài viết này, chúng tôi sẽ mô hình hóa bảng nhà hàng]. Sử dụng sqlalchemy.ext.declarative.declarative_base và tạo một lớp mới với một số hoặc tất cả các trường [cột] được xác định.= factory[]
cơ sở = khai báo_base [] instance in session.query[restaurants].filter_by[Name=”Morris Park Bake Shop”]:
Nhà hàng lớp [cơ sở]:[“borough: “, instance.borough]
__tablename__ = Nhà hàng ”[“cuisine: “, instance.cuisine]
borough = cột [chuỗi, chính_key = true][“ — — — — -”]
ẩm thực = cột [chuỗi]
…
Truy vấn dữ liệu MongoDB= restaurants.metadata.tables[“restaurants”]
Với lớp ánh xạ được chuẩn bị, bạn có thể sử dụng đối tượng phiên để truy vấn nguồn dữ liệu. Sau khi ràng buộc động cơ với phiên, cung cấp lớp ánh xạ cho phương thức truy vấn phiên. instance in session.execute[restaurants_table.select[].where[restaurants_table.c.Name == “Morris Park Bake Shop”]]:
Nhà hàng lớp [cơ sở]:[“borough: “, instance.borough]
__tablename__ = Nhà hàng ”[“cuisine: “, instance.cuisine]
borough = cột [chuỗi, chính_key = true][“ — — — — -”]
ẩm thực = cột [chuỗi]
…
Truy vấn dữ liệu MongoDB
Với lớp ánh xạ được chuẩn bị, bạn có thể sử dụng đối tượng phiên để truy vấn nguồn dữ liệu. Sau khi ràng buộc động cơ với phiên, cung cấp lớp ánh xạ cho phương thức truy vấn phiên.= restaurants[borough=”placeholder”, Name=”Morris Park Bake Shop”]
session.add[new_rec]
session.commit[]
Sử dụng phương thức truy vấn
Factory = sessionMaker [Bind = Engine]
phiên = nhà máy []= session.query[restaurants].filter_by[SOME_ID_COLUMN=”SOME_ID_VALUE”].first[]
Ví dụ, trong phiên= “Morris Park Bake Shop”
session.commit[]
In
in [ẩm thực của người Hồi giáo: Hồi, ví dụ.cuisine]
in[" - - - - -"]= session.query[restaurants].filter_by[SOME_ID_COLUMN=”SOME_ID_VALUE”].first[]
session.delete[deleted_rec]
session.commit[]
Ngoài ra, bạn có thể sử dụng phương thức thực thi với đối tượng bảng thích hợp. Mã dưới đây hoạt động với một phiên hoạt động.
Sử dụng phương thức thực thi
Nhà hàng_table = nhà hàng.metadata.tables [Nhà hàng của người Hồi giáo]]