MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Lập trình cơ sở dữ liệu Python với MongoDB cho người mới bắt đầu

Mục đích của hướng dẫn lập trình cơ sở dữ liệu Python này là cung cấp giới thiệu nhẹ nhàng về cách sử dụng cơ sở dữ liệu NoSQL làm nơi lưu trữ dữ liệu cho các ứng dụng Python. Đối tượng dự kiến ​​là các nhà phát triển cấp độ mới bắt đầu hoặc các nhà phát triển cấp độ trung cấp, những người đã quen với việc sử dụng cơ sở dữ liệu hướng SQL như Oracle, SQL Server hoặc MySQL. Các phần trình diễn trong bài viết này sẽ song song với các phần trình diễn được sử dụng trong các bài viết về lập trình Cơ sở dữ liệu SQL khác liên quan đến Python, chẳng hạn như Lập trình cơ sở dữ liệu Python với SQL Express cho người mới bắt đầu và tương tự, sẽ sử dụng Python 3.

NoSQL là gì?

Sự phổ biến của Python tiếp tục ngày càng phổ biến một phần vì tính dễ dàng mà nó có thể hoạt động với các công nghệ mới. Một trong những công nghệ “mới” đó là việc sử dụng cơ sở dữ liệu “NoSQL”. Một trong những tính năng hấp dẫn nhất của các loại cơ sở dữ liệu này là thực tế là, như tên của nó, nói chung không có ngôn ngữ truy vấn bổ sung, chẳng hạn như một trong những biến thể dường như của SQL, phải được học để làm việc với cơ sở dữ liệu. từ quan điểm có lập trình. Điều này giúp giảm bớt đáng kể việc phát triển ứng dụng vì cấu trúc dữ liệu gốc của ngôn ngữ lập trình và cú pháp của nó là “ngôn ngữ truy vấn” trên thực tế, với điều kiện tất nhiên là các mô-đun thích hợp được thêm vào môi trường phát triển.

Cơ sở dữ liệu NoSQL, ngoài hầu hết không sử dụng ngôn ngữ truy vấn, cũng cấu trúc dữ liệu bên trong theo cách khác biệt đáng kể với cơ sở dữ liệu SQL. Một nhà phát triển đã quen với mô hình lập trình SQL phải điều chỉnh suy nghĩ của mình để phù hợp với cách NoSQL hoạt động kinh doanh. Đi xa hơn nữa, thiết kế của các máy chủ cơ sở dữ liệu NoSQL có cùng điểm khác biệt. Máy chủ cơ sở dữ liệu NoSQL tập trung hơn vào tốc độ và khả năng mở rộng với "tính nhất quán cuối cùng", trái ngược với máy chủ cơ sở dữ liệu SQL tập trung nhiều hơn vào tính nhất quán tức thì.

MongoDB là gì?

MongoDB là một trong nhiều cơ sở dữ liệu “NoSQL”. Giống như MariaDB, nó sử dụng hệ thống tên người dùng và mật khẩu riêng để quản lý truy cập. MongoDB, ngoài việc cung cấp phần mềm máy chủ có thể tải xuống miễn phí, còn cung cấp tùy chọn giới thiệu dựa trên đám mây với chi phí bằng không (thông qua Atlas của nó cung cấp) giúp giảm thiểu nhu cầu tải xuống và định cấu hình một phiên bản. Các minh họa trong hướng dẫn lập trình cơ sở dữ liệu này sẽ sử dụng phiên bản MongoDB miễn phí được lưu trữ trên đám mây.

Như trường hợp của Python và bất kỳ máy chủ cơ sở dữ liệu nào, một mô-đun trình điều khiển cơ sở dữ liệu bổ sung, cụ thể là PyMongo , là bắt buộc để Python giao tiếp với máy chủ MongoDB và bất kỳ cơ sở dữ liệu nào có trong nó. Hơn nữa, giống như bất kỳ máy chủ cơ sở dữ liệu nào, MongoDB cung cấp một công cụ quản lý đồng hành có tên là MongoDB Shell . Các minh họa trong bài viết này sẽ sử dụng cơ sở dữ liệu MongoDB được tạo bằng công cụ này. Lưu ý rằng MongoDB Shell là một trong nhiều công cụ quản lý tồn tại cho MongoDB.

  • Tải xuống máy chủ cộng đồng MongoDB
  • Sản phẩm giới thiệu dựa trên nền tảng đám mây không mất phí MongoDB
  • Tải xuống MongoDB Shell

Xin lưu ý rằng các liên kết được đăng đang hoạt động tại thời điểm bài viết này được viết. Nếu các liên kết không còn hoạt động, các sản phẩm này có thể được tải xuống thông qua công cụ tìm kiếm ưa thích của một người.

Cách định cấu hình MongoDB để phát triển phần mềm

MongoDB Cung cấp giới thiệu dựa trên nền tảng đám mây không tốn phí cấu hình hoàn toàn dựa trên web. Nó có thể được liên kết một cách thuận tiện với tài khoản Google của một người cho mục đích đăng nhập một lần. Chỉ cần ghi nhớ những lưu ý sau:

  • Chọn một dịch vụ lưu trữ dữ liệu ở gần. Dịch vụ lưu trữ được hiển thị trong bài viết này ở Virginia có thể không lý tưởng cho những người ở xa nơi đó.
  • Mật khẩu được sử dụng để kết nối ứng dụng với máy chủ cơ sở dữ liệu phải được lưu một cách an toàn vì không thể khôi phục được nếu bị mất. Nó chỉ có thể được đặt lại.
  • Tên Cụm, sau khi đã đặt, không thể thay đổi. Các cuộc trình diễn trong bài viết này sẽ sử dụng một cụm có tên là Cluster0 .
  • Đảm bảo rằng mọi địa chỉ IP mà từ đó bất kỳ ứng dụng nào, bao gồm MongoDB Shell, đều được định cấu hình trong cài đặt bảo mật.
  • MongoDB Shell có thể không có chương trình cài đặt. Luôn đảm bảo bao gồm đường dẫn đến thư mục chứa ứng dụng này trong đường dẫn Hệ điều hành.

Cách kết nối với máy chủ cơ sở dữ liệu MongoDB

Sau khi định cấu hình thành công Cụm MongoDB dựa trên đám mây, bạn cần lưu ý chuỗi kết nối cụ thể được sử dụng để kết nối với nó. Các chuỗi bên dưới cũng có thể được truy xuất bằng cách đăng nhập vào MongoDB Atlas Site và nhấp vào Kết nối nút:

Hình 1 - Trang tổng quan MongoDB Atlas với nút Kết nối được đánh dấu

Lưu ý, các cài đặt như tên người dùng và mật khẩu cơ sở dữ liệu và dải IP được phép cho kết nối có thể được đặt trong liên kết Truy cập Cơ sở dữ liệu và Truy cập Mạng, tương ứng.

Dưới đây là hai ví dụ kết nối. Đầu tiên là cho MongoDB Shell.

MongoDB:Kết nối từ Dòng lệnh

Mở Dấu nhắc lệnh của Windows được giải thích trong Lập trình cơ sở dữ liệu Python với SQL Express cho người mới bắt đầu trong Dấu nhắc lệnh mở Windows tiêu đề.

Hình 2 - Kết nối qua Dòng lệnh với MongoDB Shell

Lưu ý rằng lệnh mở MongoDB Shell sẽ khác nhau tùy theo Hệ điều hành. Tên Cụm có thể khác nhau và các tham số được đánh dấu trong lệnh sẽ cần được thay đổi thành các đặc điểm cụ thể của thiết lập MongoDB dựa trên đám mây. Trong Windows, lệnh này được gọi là mongosh . Lưu ý rằng tên cơ sở dữ liệu RazorDemo được bao gồm bên dưới, vì đó là cơ sở dữ liệu sẽ được sử dụng trong các phần trình diễn trong hướng dẫn lập trình này. Lệnh cũng chấp nhận một tham số bổ sung cho mật khẩu như được hiển thị bên dưới:

Hình 3 - Xác thực bằng Mật khẩu trong Dòng lệnh.

Lưu ý, mặc dù thuận tiện cho mục đích phát triển khi sử dụng mật khẩu trong dòng lệnh, thay vì phải nhập mật khẩu mỗi lần, hãy lưu ý rằng mật khẩu hiển thị trong lịch sử của các lệnh đã thực hiện trước đó. Tùy chọn này không được sử dụng trong môi trường phát triển nơi người dùng khác có thể truy cập lịch sử lệnh trước đó của một người.

Ngoài ra, hy vọng rằng không ai nghĩ rằng tôi thực sự sẽ sử dụng 123456 như một mật khẩu, phải không?

Hình 4 - Chỉ kiểm tra 🙂

Lưu ý rằng trong cả hai ví dụ trên, ^ ký tự được sử dụng làm biểu tượng tiếp tục dòng trong Dấu nhắc lệnh của Windows.

Kết nối MongoDB từ Python

Chuỗi sau, với những thay đổi phù hợp, có thể được đặt thành mã Python để PyMongo sử dụng người lái xe:

Hình 5 - Kết nối qua Python và PyMongo

Trong chuỗi kết nối ở trên, tên cơ sở dữ liệu RazorDemo sẽ được sử dụng thay cho myFirstDatabase .

Cách tạo cơ sở dữ liệu trong MongoDB

MongoDB không “tạo” cơ sở dữ liệu cho đến khi cơ sở dữ liệu đó được “sử dụng” và dữ liệu thực sự được ghi vào đó. Hình ảnh bên dưới cho thấy kết nối thành công với dịch vụ MongoDB Atlas bằng cách sử dụng RazorDemo cơ sở dữ liệu, nhưng không có cơ sở dữ liệu nào như vậy được liệt kê khi sử dụng show dbs lệnh:

Hình 6 - Chưa có cơ sở dữ liệu RazorDemo…

Cách “Sử dụng” Cơ sở dữ liệu trong MongoDB

Trong MongoDB, cơ sở dữ liệu được “sử dụng” bất cứ khi nào nó được kết nối với trực tiếp bằng chuỗi truy vấn hoặc khi tên cơ sở dữ liệu là đối số của use yêu cầu. Lưu ý cách gọi lệnh này trên cơ sở dữ liệu hiện được chọn sẽ hiển thị một thông báo khác với việc chuyển sang cơ sở dữ liệu đó:

Hình 7 - Chuyển đổi giữa các cơ sở dữ liệu

Để thực sự “tạo” cơ sở dữ liệu, một số dữ liệu phải được chèn vào. RazorDemo cơ sở dữ liệu từ các bài viết trước, Bắt đầu với các trang dao cạo bằng C # và Lập trình cơ sở dữ liệu Python với SQL Express cho người mới bắt đầu, sử dụng hai bảng, đó là Nghệ sĩ Anbom . Trong MongoDB, cái mà cơ sở dữ liệu hướng SQL gọi một bảng được gọi là bộ sưu tập . Tạo hai mục nhập vào bộ sưu tập có tên Nghệ sĩ Anbom tương ứng, sẽ tạo cả cơ sở dữ liệu cũng như các bộ sưu tập.

Mỗi mục nhập trong một bộ sưu tập được coi là một tài liệu . Điều này tương tự như một bản ghi trong bảng cơ sở dữ liệu hướng SQL.

Lưu ý, điều quan trọng đối với một ứng dụng chính là lưu tạo bảng các câu lệnh trong cơ sở dữ liệu hướng SQL, lý luận tương tự cũng sẽ áp dụng cho cơ sở dữ liệu ban đầu và các lệnh tạo bộ sưu tập cho cơ sở dữ liệu MongoDB cho một ứng dụng chính.

Các lệnh bên dưới sẽ tạo Nghệ sĩ bộ sưu tập bằng cách chèn một tài liệu vào đó, rồi truy vấn Nghệ sĩ bộ sưu tập để xác minh sự thành công của hoạt động chèn. Lưu ý cách thao tác chèn sử dụng cú pháp JSON:

db.Artists.insertOne({artist_name: "Skeered Tigon Stripes"})

db.Artists.find({})

Listing 1 - Inserting a new document.

Các lệnh này cung cấp kết quả sau trong MongoDB Shell:

Hình 8 - Tạo bộ sưu tập Nghệ sĩ

_id hiển thị ở trên đã được tạo tự động và là duy nhất trong bộ sưu tập, tương tự như giá trị khóa chính được tạo tự động trong cơ sở dữ liệu hướng SQL.

Lưu ý, MongoDB Shell có thể báo cáo rằng .insert () lệnh không được dùng nữa. Ví dụ này sử dụng .insertOne () vì đó là một trong những lựa chọn thay thế được cung cấp.

Cú pháp tương tự có thể được sử dụng để tạo Anbom bộ sưu tập:

db.Albums.insertOne({artist_name: "Skeered Tigon Stripes",album_name: "Genetically Engineered Critters"})

db.Albums.find({})

Listing 2 - Inserting another new document

Hình 9 - Tạo bộ sưu tập Album

Lưu ý, Cảnh báo liên quan đến caniuse-lite xuất hiện khi nhấn phím Enter trước khi hoàn thành lệnh tạo tài liệu. MongoDB Shell sẽ cho phép ngắt một lệnh trên nhiều dòng trước khi hoàn thành nó. Cảnh báo này chỉ ra rằng MongoDB Shell có thể đang sử dụng trình điều khiển lỗi thời và nó sẽ cần được cập nhật trong bản phát hành trong tương lai.

Nó dường như không phá vỡ quá trình tạo tài liệu.

Một số tài liệu khác cho Anbom bộ sưu tập:

db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Volume Control: No" })
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Verse Vica })
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Rotten to the Core" })

db.Albums.find({})

Listing 3 - Additional documents for the Albums collection

Hình 10 - Các tài liệu Anbom bổ sung mới

KHÔNG Ràng buộc về Khóa Ngoại

Vì MongoDB không phải là hệ quản trị cơ sở dữ liệu quan hệ nên nó không cung cấp cơ chế thực thi các loại ràng buộc khóa ngoại được sử dụng trong các bảng cơ sở dữ liệu hướng SQL giữa các tập hợp. Nó mong đợi ứng dụng duy trì và thực thi các mối quan hệ như vậy. Trong ngữ cảnh của MongoDB Shell, nhà phát triển phải nhập đúng các giá trị để đảm bảo rằng mối quan hệ giữa các tài liệu trong các tập hợp có thể được suy ra.

.deleteOne () lệnh có thể được sử dụng để xóa các tài liệu đã nhập sai:

db.Albums.deleteOne({ artist_name: "Skeered Tigon Stripes", album_name: "I Typed the Album Name Wrong" })
Listing 4 - Deleting a document.

Lưu ý rằng, nếu một tài liệu không khớp với các thông số đã nhập, sẽ không có lỗi nào được hiển thị, thay vào đó, thông báo xác nhận sẽ hiển thị rằng không có gì bị xóa:

Hình 11 - Thông báo xác nhận hiển thị không có tài liệu nào bị xóa

.deleteMany () lệnh có thể được sử dụng để xóa nhiều bản ghi phù hợp với một tiêu chí JSON. Lệnh dưới đây sẽ xóa tất cả tài liệu trong bộ sưu tập Album có tên_thương_hệ giá trị không phải là Sọc Tigon bị xiên :

db.Albums.deleteMany({artist_name: {$ne : "Skeered Tigon Stripes" }})

Listing 5 - Deleting multiple documents based on criteria.

Hình 12 - Xóa nhiều bản ghi

Kết luận về lập trình cơ sở dữ liệu Python với MongoDB

Bây giờ chúng ta đã học cách kết nối với cơ sở dữ liệu MongoDB và cách tạo phiên bản KHÔNG SQL của bảng có “bản ghi”, chúng ta có thể chuyển sang làm việc với các tập lệnh Python để chèn dữ liệu vào cơ sở dữ liệu MongoDB của mình. Chúng ta sẽ tiếp tục thảo luận đó trong phần thứ hai - và là phần cuối cùng - của hướng dẫn lập trình cơ sở dữ liệu Python này:Phát triển cơ sở dữ liệu Python và MongoDB.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bộ lọc mảng Mongodb 3.6.0-rc3 không hoạt động?

  2. MongoDB có vấn đề kết nối lại hay tôi làm sai?

  3. MongoDB $ phút

  4. Cập nhật từ điển trong Mongodb

  5. Làm thế nào để triển khai has_many:thông qua các mối quan hệ với Mongoid và mongodb?