pymongo模块
安装
pip install pymongo
pymongo库的使用
创建一个数据库
创建数据库需要使用MongoClient
对象,并且指定连接的url地址
、端口号
和要创建的数据库名
注:在
MongoDB
中,数据库只有在内容插入后才会创建!!!也就是说,数据库创建后要创建集合(数据表)
并插入一个文档(记录)
,数据库才会真正的创建
创建连接
》MongoClient
是MongoDB的客户端代理对象,可以用来执行增删改查操作,而且还内置了连接池
import pymongo
client = pymongo.MongoClient(host="localhost", port=27017)
// 或者用这种方式:`client = pymongo.MongoClient("mongodb://localhost:27017")`
client.admin.authenticate("admin", "abc123456")
[导入MongoClient
,创建连接并且切换到admin逻辑库,进行MongDB的身份验证(输入用户名和密码)]
数据写入
》insert_one
和insert_many
两个函数可以向MongDB中写入数据
client.school.teacher.insert_one({"name":"李璐"})
client.school.teacher.insert_many([
{"name":"陈刚"},
{"name":"郭丽丽"}
])
[insert_one
表示插入一条数据;insert_many
表示插入多条数据。注意书写格式!!!]
数据查询
》find_one
和find
两个函数可以从MongDB中查询数据
teachers=client.school.teacher.find({})
for teacher in teachers:
print(teacher["_id"],teacher["name"])
teacher=client.school.teacher.find_one({"name":"李璐"})
print(teacher["_id"],teacher["name"])
额外补充:
client.school.teacher.find({"name": {"$regex": "^李"}})
// 在find()方法里,可以嵌套进正则表达式,用`$regex`方法即可。
[find_one
表示查询一条记录;find
表示查询多条记录,可以用for循环遍历输出查询到的所有数据]
数据修改
》update_one
和update
两个函数可以修改MongDB中的数据
client.school.teacher.update_many({},{"$set":{"role":["班主任"]}})
// 修改所有老师的数据,添加role新字段,并设置值为"班主任"
client.school.teacher.update_one({"name":"李璐"},{"$set":{"sex":"女"}})
// 修改一条记录,添加新字段sex,并设置值为“女”
client.school.teacher.update_one({"name":"李璐"},{"$push":{"role":"年级主任"}})
// 向李璐的数据中role字段添加“年级主任”的值
数据删除
》delete_one
和delete_many
两个函数可以修改MongoDB数据
client.school.teacher.delete_one({"name":"李璐"})
client.school.teacher.delete_many({})
其他操作总结
案例:
》distinct
和sort
函数的参数类型比较特殊!!需要额外注意!!!
teachers=client.school.teacher.find({}).skip(0).limit(10)
// 分页查询出前10条记录
teachers=client.school.teacher.distinct("name")
// 查出name参数不重复的数据
teachers=client.school.teacher.find().sort([("name",-1)])
// 查出所有老师数据,并以倒序输出
[注意!!!
distinct()
的参数是字符串类型!!!
sort()
的参数类型为列表,而列表中的元素为元组,因为可以对多条记录进行排序,所以条件都写在列表的元组中