Hướng dẫn python mongodb import - nhập mongodb python

Tiếp tục series lập trình Python 3, hôm nay vinasupport sẽ hướng dẫn các bận cách kết nối tới CSDL MongoDB bằng Python 3.

Các bài viết nên tham khảo trước:

  • MongoDB là gì? Hướng dẫn cài đặt MongoDB trên Ubuntu
  • Python là gì? Hướng dẫn viết chương trình sử dụng Python
  • Hướng dẫn sử dụng pip để cài đặt và quản lý Module của Python

Cài đặt thư viện MongoDB Driver

Đầu tiên để kết nối tới cơ sở dữ liệu MongoDB chúng ta cần cài đặt thư viện MongoDB Driver có tên là pymongo, để cài đặt pymongo chúng ta sử dụng lệnh pip3 đối với Python 3 và pip nếu sử dụng Python 2.

pip3 install pymongo

Kết nối đến MongoDB bằng Python 3

Trên MongoDB, mình đã tạo sẵn 1 database là vinasupport

Hướng dẫn python mongodb import - nhập mongodb python

Đoạn code Python 3 thực hiện kết nối và hiển thị danh sách database trên MongoDB

#!/usr/bin/env python3
from pymongo import MongoClient
import pprint

# Connect to mongodb
client = MongoClient('192.168.2.10', 27017)

# get database
db = client.vinasupport

# Show database stats
pprint.pprint(db.command('dbstats'))

Đoạn code trên sử dụng class MongoClient được import từ thư viện pymongo, kết nối tới CSDL MongoDB ở địa chỉ 192.168.2.10 trên công 27017 (Cổng mặc định)

Kết quả:

Hướng dẫn python mongodb import - nhập mongodb python

Nguồn: vinasupport.com

Để tạo kết nối giữa ngôn ngữ lập trình Python và cơ sở dữ liệu MongoDB, trước tiên chúng ta cần cài đặt trình điều khiển pymongo. Ở đây, chúng tôi đang tạo một ví dụ kết nối với cơ sở dữ liệu và thực hiện các hoạt động cơ sở dữ liệu.

Các bài viết liên quan:

Ví dụ này bao gồm các bước sau:

  1. Install Driver
  1. Tạo File Python

from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  

  1. Thực thi tập lệnh Python
  1. Nhập vào Mongo Shell

Bây giờ, hãy nhập vào trình bao cơ sở dữ liệu MongoDB để xem cơ sở dữ liệu và bộ sưu tập đã tạo.

Chúng ta có thể sử dụng lệnh sau để nhập vào cơ sở dữ liệu.

  1. Kiểm tra cơ sở dữ liệu

Lệnh sau được sử dụng để hiển thị cơ sở dữ liệu có sẵn.

  1. Kiểm tra Collection

Lệnh sau được sử dụng để hiển thị bộ sưu tập có sẵn vào cơ sở dữ liệu.

  1.  Access Records

Chúng tôi có thể xem các bản ghi được lưu trữ trong bộ sưu tập cụ thể. Lệnh sau được sử dụng để hiển thị bản ghi.

Kết nối mongodb MongoDB Python 6

Lời nói đầu.

Xin chào mọi người đã quay trở lại seria bài viết về python của mình . Ai cần đọc về bài viết về python phần 1, 2 và 3 của mình thì click vào link bên dưới nhé

Hướng dẫn python mongodb import - nhập mongodb python
. Ai cần đọc về bài viết về python phần 1, 2 và 3 của mình thì click vào link bên dưới nhé
Hướng dẫn python mongodb import - nhập mongodb python

  • Getting started Python - P1
  • Getting started Python - P2
  • Getting started Python - P3
  • Getting started Python - Handle File
  • Python vs MySQL

Ở bài viết lần trước mình có trình bày với các bạn cách làm việc của Mysql và Python với nhau rồi. Ngày hôm nay mình xin nói về python và 1 cơ sở dữ liệu khác đó là

from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  
8

Nội dung.

I : Install MongoDB Driver

Đâu tiên , để có thể truy cập tời MongoDB thì Python cần một MongoDB Driver để kết nối. Trong bài viết này , mình sẽ giời thiệu cho các bạn sử dung

from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  
9

from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  
9 là một driver được nhiều người sử dụng khi dung Python và làm việc với MongoDB. Nào hay cài đặt package này bằng cách chạy câu lệnh này nhé :

python -m pip install pymongo

Ok, khi bạn đã cài đặt xong package thì thử kết nối đến database xem sao nhé .

import pymongo

Nếu đoạn mã trên được thực thi không có lỗi, "pymongo" đã được cài đặt thành công và sẵn sàng để sử dụng.

II : Các thao tác căn bản

1 : Create Database.

Để tạo 1 Mongo database , đầu tiên chúng ta cần tạo một object MongoClient . Sau đó , ta cần cung cấp một URL với địa chỉ IP chính xác và tên database mà bạn muốn tạo.

MongoDB sẽ tạo ra database mà bạn muốn . Tuy nhiên nếu database đã tồn tại thì Python sẽ tạo ra 1 connection vơi database được chỉ định :

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

mydb = myclient["mydatabase"]

Note : Trong MongoDB , một Database không được khởi tạo cho đến khi nó có nội dung .

MongoDB sẽ chờ cho đến khi bạn tạo ra 1 collection (Table) nào đó , với ít nhất một document ( record) ... trước khi nó thực sự tạo ra một cơ sở dữ liệu.

Nếu bạn muốn check xem database có tồn tại hay không thì bạn có thể check băng cách list toàn bộ các database trong CSDL . Bằng cách sau :

print(myclient.list_database_names())

Hoặc chỉ định ra rõ ràng tên Database :

dblist = myclient.list_database_names()
if "mydatabase" in dblist:
  print("The database exists.")

Remember : Trong MongoDB , một cơ sở dữ liệu chỉ được tạo khi nó có nội dung (document) bên trong. Vì vậy lần đầu tiên bạn thực hiện tạo cơ sở dữ liệu cần phải thực hiện 2 bước sau (Tạo collection và Tạo Document) trước khi bạn muốn check xem database có tồn tại không.

2 : Creating a Collection

Để tạo một collection trong MongoDB , bạn cần sử dùng database objeect và chỉ định ra tên của collection mà bạn muốn tạo. MongoDB sẽ tạo ra collection nếu nó không tồn tại :

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]

mycol = mydb["customers"]

Note : Trong MongoDB , một colection không được khởi tạo cho đến khi nó có nội dung (document).

Trong trường hợp bạn muốn check xem collection có tồn tại hay không thì có thể dùng cách sau :

collist = mydb.list_collection_names()
if "customers" in collist:
  print("The collection exists.")

Remember : Cũng như cơ sở dữ liệu, Collection chỉ được tạo khi nó có nội dung (document) bên trong. Vì vậy lần đầu tiên bạn thực hiện tạo Collection cần phải thực hiện tạo Document trước khi bạn muốn check xem Collection có tồn tại không.

3 : Insert / Update .

3.1 : Insert

Để tạo một record / document bạn cần kết nôí đến một collection trong database . Và sử dụng hàm

python -m pip install pymongo
1 .

Hàm

python -m pip install pymongo
1 chấp nhập một object có name(s) và value(s) cho mỗi field trong document mà bạn muốn insert . Cụ thể như sau :

#!/usr/bin/env python3
from pymongo import MongoClient
import pprint

# Connect to mongodb
client = MongoClient('192.168.2.10', 27017)

# get database
db = client.vinasupport

# Show database stats
pprint.pprint(db.command('dbstats'))
0

Hàm

python -m pip install pymongo
1 sẽ trả ra một object InsertOneResult . Object đó có thuộc tính
python -m pip install pymongo
4 . Nó chính là id của document vừa mới insert vào :

#!/usr/bin/env python3
from pymongo import MongoClient
import pprint

# Connect to mongodb
client = MongoClient('192.168.2.10', 27017)

# get database
db = client.vinasupport

# Show database stats
pprint.pprint(db.command('dbstats'))
1

Note : Nếu bạn không xác định field

python -m pip install pymongo
5 và MongoDB sẽ tạo cho bạn một unique id cho mỗi document

Để insert nhiều document cùng một lúc vào MongoDB , chúng ta có thể sử dụng method

python -m pip install pymongo
6 .

Hàm

python -m pip install pymongo
6 chấp nhập một list objects có name(s) và value(s) cho mỗi field trong document mà bạn muốn insert . Cụ thể như sau :

#!/usr/bin/env python3
from pymongo import MongoClient
import pprint

# Connect to mongodb
client = MongoClient('192.168.2.10', 27017)

# get database
db = client.vinasupport

# Show database stats
pprint.pprint(db.command('dbstats'))
2

Hàm

python -m pip install pymongo
6 sẽ trả ra một object InsertManyResult . Object đó có thuộc tính
python -m pip install pymongo
9 . Nó chính là id của các document vừa mới insert vào .

Trong trường hợp bạn không muốn sử dụng unique id do Mongo tạo. Khi create bạn có thể thêm field

python -m pip install pymongo
5 vào document muốn insert. Và phải nhớ rằng các
python -m pip install pymongo
5 là duy nhất. 2 document giống nhau
python -m pip install pymongo
5 sẽ không thể insert được.

#!/usr/bin/env python3
from pymongo import MongoClient
import pprint

# Connect to mongodb
client = MongoClient('192.168.2.10', 27017)

# get database
db = client.vinasupport

# Show database stats
pprint.pprint(db.command('dbstats'))
3

3.2 : Update

3.2.1 : Update once

Để update trong python, chúng ta có thê sử dụng

import pymongo
3 method.

  • Đối số đầu tiên của hàm này là một truy vấn định nghĩa băng object dữ liệu
  • Đối số thứ 2 của hàm này là là một object dữ liệu mới ... thể hiện trạng thái mới của document.

Cụ thể như sau :

#!/usr/bin/env python3
from pymongo import MongoClient
import pprint

# Connect to mongodb
client = MongoClient('192.168.2.10', 27017)

# get database
db = client.vinasupport

# Show database stats
pprint.pprint(db.command('dbstats'))
4

Note : Nếu query tìm được nhiều hơn 1 kết quả thì chi kết quả đầu tiên được update .

3.2.2 : Update many

Để update nhiều record trong python, chúng ta có thê sử dụng

import pymongo
4 method.

#!/usr/bin/env python3
from pymongo import MongoClient
import pprint

# Connect to mongodb
client = MongoClient('192.168.2.10', 27017)

# get database
db = client.vinasupport

# Show database stats
pprint.pprint(db.command('dbstats'))
5

3.3 : Delete

3.3.1 : Delete once

Để delete 1 record trong python, chúng ta có thê sử dụng

import pymongo
5 method.

  • Đối số đầu tiên của hàm này là một truy vấn định nghĩa băng object dữ liệu

Cụ thể như sau :

#!/usr/bin/env python3
from pymongo import MongoClient
import pprint

# Connect to mongodb
client = MongoClient('192.168.2.10', 27017)

# get database
db = client.vinasupport

# Show database stats
pprint.pprint(db.command('dbstats'))
6

Note : Nếu query tìm được nhiều hơn 1 kết quả thì chi kết quả đầu tiên được xóa .

3.3.2 : Delete many

Để delete nhiều record trong python, chúng ta có thê sử dụng

import pymongo
6 method.

#!/usr/bin/env python3
from pymongo import MongoClient
import pprint

# Connect to mongodb
client = MongoClient('192.168.2.10', 27017)

# get database
db = client.vinasupport

# Show database stats
pprint.pprint(db.command('dbstats'))
7

3.2.3 : Delete All Documents in a Collection

Trong trường hợp bạn muốn xóa cả collection thì có thể dùng cách sau:

#!/usr/bin/env python3
from pymongo import MongoClient
import pprint

# Connect to mongodb
client = MongoClient('192.168.2.10', 27017)

# get database
db = client.vinasupport

# Show database stats
pprint.pprint(db.command('dbstats'))
8

4 : Select data

4.1 : Find One

Đê select dữ liệu từ collection trong MongoDB , chúng ta có thể

import pymongo
7 method . Với method này chúng ta sẽ có được phần tử đầu tiên được tìm ra trong collection.

#!/usr/bin/env python3
from pymongo import MongoClient
import pprint

# Connect to mongodb
client = MongoClient('192.168.2.10', 27017)

# get database
db = client.vinasupport

# Show database stats
pprint.pprint(db.command('dbstats'))
9

4.2 : Find All

Đôi khi chúng ta không chỉ muốn tìm duy nhân 1 bản ghi mà muốn nhận được cả 1 list danh sách các document thỏa mãn các điều kiên. Vì vậy chúng ta có

import pymongo
8 method .

  • Đối số đầu tiên trong method
    import pymongo
    
    8 là 1 query object . Trong các ví dụ mình sẽ ko sử dung object này
  • Đối số thứ 2 trong method
    import pymongo
    
    8 là 1 object giúp chúng ta xác nhận được các field mà chúng ta muốn lấy
from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  
0

ok, trong trường hợp bạn chỉ muốn lấy 1 vài field trong câu querry thì có thể làm như sau :

from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  
1

Query bên trên có nghĩa là bạn chỉ select ra 2 field

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

mydb = myclient["mydatabase"]
1 vs
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

mydb = myclient["mydatabase"]
2 và field
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

mydb = myclient["mydatabase"]
3 sẽ không được show ra .

Nếu trong 1 query bạn không set đầy đủ field có trong record thì mặc định sẽ set là 1 và nếu bạn ko có thông tin liên quan gì đến field đó thì nó sẽ mặc định được show ra

from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  
2

4.3 : Filter Như đã nói ở trên , khi bạn select 1 record ra, bạn có 1 object đối số thể hiện các điều kiện mà bạn muốn tìm kiếm. Cụ thể như sau : Như đã nói ở trên , khi bạn select 1 record ra, bạn có 1 object đối số thể hiện các điều kiện mà bạn muốn tìm kiếm. Cụ thể như sau :

from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  
3

Và nếu bạn muốn tạo 1 câu query nâng cao hơn thì sao . Dưới đây là ví dụ về 1 query mà field

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

mydb = myclient["mydatabase"]
2 bắt đầu bằng kí tự
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

mydb = myclient["mydatabase"]
5 hoặc các kí tự sau
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

mydb = myclient["mydatabase"]
6 trong bảng chữ cái alphabe. Cụ thể như sau :

from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  
4

Hoặc ta cũng có thể sử dụng Regex để tạo ra 1 câu query. Dưới đây là 1 ví dụ về query lấy các document có field

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

mydb = myclient["mydatabase"]
2 bắt đầu băng chứ
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

mydb = myclient["mydatabase"]
5. Cụ thể như sau :

from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  
5

4.4 : Sort

Khi bạn muốn sort các bản ghi lấy ra thì chúng ta có method

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

mydb = myclient["mydatabase"]
9. Cụ thể như sau :

from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  
6

sort("name", 1) #ASC

sort("name", -1) #DESC

4.5 : Limit

Và cuối cùng tất nhiên rồi =)) để limit 1 list các dữ liệu , chúng ta có thể sử dụng

print(myclient.list_database_names())
0 method. Cụ thể như sau :

from pymongo import MongoClient # import mongo client to connect  
import pprint  
# Creating instance of mongoclient  
client = MongoClient()  
# Creating database  
db = client.testDB  
employee = {"id": "101",  
"name": "Peter",  
"profession": "Software Engineer",  
}  
# Creating document  
employees = db.employees  
# Inserting data  
employees.insert_one(employee)  
# Fetching data  
pprint.pprint(employees.find_one())  
7

Ok, vậy là mình đã nói xong về các công việc cơ bản để kết nối cũng như sử dụng Mysql với python . Cám ơn các bạn đã theo dõi.

Hướng dẫn python mongodb import - nhập mongodb python

Tài liệu tham khảo

https://www.w3schools.com/python/default.asp