PyMongo简易教程

no alter data available

PyMongo简易教程

2023/03/19

pythonmongodb

前言:本教程旨在弥补中文互联网上pymongo教程不适配4.0版本的一些问题 本教程基于4.3.3版本

下载PyMongo

pip 是一个python官方的包管理工具

pip install pymongo
# 你可以指定安装pymongo版本,像这样:
pip install pymongo==4.3.3
#如果你希望搜索到大部分的中文文档是有效的,请勿使用4以上的版本

连接MongoDB

无认证方式

如果你的MongoDB数据库无需认证即可操作,可以直接使用以下两种方式连接:

import pymongo
if __name__=="__main__":
# 第一种方式,指定参数
    client = pymongo.MongoClient(host="localhost",# 主机名
                                 port="27017"# 端口名
                                )
#第二种方式,使用uri直接连接
    client = pymongo.MongoClient("mongodb://localhost:27017/")

以上两种方式的效果是完全一样的,返回一个MongoClient对象

有认证方式

请注意:pymongo在升级到4.0版本以后带来了大量的变化,具体细节参考pymongo官方文档

import pymongo
if __name__=="__main__":
#pymongo==4.3.3
# 方式一
    client = pymongo.MongoClient(
                              host='example.com',# 主机名
                              port='27017',# 端口名
                              username='user',
                              password='password',
                              authSource='the_database',# 数据库名
                              authMechanism='SCRAM-SHA-256'# 加密方式)
# 方式二
    uri = "mongodb://user:password@example.com/?authSource=the_database&authMechanism=SCRAM-SHA-1"
    client = pymongo.MongoClient(uri)
# MONGODB-CR加密方式已不支持登陆,该加密方式已被MongoDB废弃

创建集合

MongoDB将文档存储在集合中。集合类似于关系数据库中的表。

import pymongo
# 创建一个python字典列表,包含8个字典
cars = [ {'name': 'Audi', 'price': 52642},
    {'name': 'Mercedes', 'price': 57127},
    {'name': 'Skoda', 'price': 9000},
    {'name': 'Volvo', 'price': 29000},
    {'name': 'Bentley', 'price': 350000},
    {'name': 'Citroen', 'price': 21000},
    {'name': 'Hummer', 'price': 41400},
    {'name': 'Volkswagen', 'price': 21600} ]

client = MongoClient('mongodb://localhost:27017/')

with client:

    db = client.testdb
    db.cars.insert_many(cars)# 将字典列表插入为集合,一个字典存储为一个文档(BSON格式)

列出集合

使用list_collection_names()

列出数据库

使用list_database_names()

删除集合

使用drop() 格式:<数据库>.<集合>.drop()

# 省略连接数据库过程
mydb = client.testdb
mydb.cars.drop()

运行命令

#省略连接数据库过程
mydb = client.testdb
status = mydb.command("serverStatus")
print(status)
#如果报错请检查用户权限

PyMongo游标

find()方法返回一个PyMongo游标,这与pymysql是类似的 该游标是对查询结果集的引用

#使用上下文管理 client,省略数据库连接过程
with client:

    db = client.testdb

    cars = db.cars.find()#使用游标

    print(cars.next())#从结果集中获取下一个文档
    print(cars.next())
    print(cars.next())

    cars.rewind()#将游标倒回到未评估状态

    print(cars.next())
    print(cars.next())
    print(cars.next())

    print(list(cars))#将游标转换为列表,它将所有数据加载到内存中

其他

参考极客教程-pymongo 该文档较新但仍有部分内容不适用于pymongo4以上的版本,如果发现了未找到xxx方法的错误,请及时移步官方文档查看变更。

Chen Xingyu

Hi! I am Chen Xingyu, a Tech enthusiast, problem solver and software engineer. Currently finishing my bachelor's degree in Geographic Information Science.

Connect With Me

I have a fair amount of knowledge of Javascript, Typescript, VueJs, and Nuxt. If you have an interesting idea, either open source or paid let's connect.

Sent Mail
© 2017-2025 All Right is reserved. 🤷‍♂️ It's open source anyway.