mongodb和python交互
时间:2023-3-1 20:06 作者:wen 分类: mongodb
一、mongodb和python交互的模式
pymongo提供了mongodb和python交互的所有方法
安装方式:
pip install pymongo
二、使用pymongo
1、导入pymongo并选择要操作的集合
数据库和集合能够自动创建
- 无需权限认证的方式创建连接对象以及集合操作对象
- 需要权限认证的方式创建连接对象以及集合对象
from pymongo import MongoClient
from urllib import quote_plus
# 账号
user = "python"
# 密码
password = "python"
# host
host = "127.0.0.1"
# port
port = 27017
uri = "mongodb://%s:%s@%s" % (quote_plus(user),quote_plus(password),host)
# qute_plus函数:对url进行编码
# uri = mongodb://python:python@127.0.0.1
client = MongoClient(uri,port=port)
collection = client.db名.集合名
from pymongo import MongoClient
# 如果是本地连接host, port参数可以省略
client = MongoClient(host, port)
#选择一个库
db = client['admin']
#权限认证
db.authenticate("python",'python')
# 选择一个集合
# collection = client.db名.集合名
# 与下面用户相同
collection = client[db名][集合名]
2、insert()添加数据
insert()可以批量的插入数据列表,也可以插入一条数据
collection.insert({一条数据})
collection.insert([{一条数据},{数据二}])
3、find_one()查找一条数据
接受一个字典形式的条件,返回字典形式的整体数据,如果条件为空,则返回第一天
ret = client.test.find_one({"name":"test001"})
# 包含mongodb的ObjectID对象的字典
print(ret)
# 清除mongodb的ObjectID对象的k,v
_ = ret.pop('_id')
print(ret)
4、find()查询多条数据
ret = client.test.find({"name":"test001"})
for data in ret:
print(data)
5、update()更新数据(全文档覆盖或指定键值,更新一条或多条)
- 语法:collection.update({条件},{指定的kv或完整的一条数据},multi=False/True,upsert=False/True)
- multi参数:默认为False,表示更新一条;multi=True则更新多条;multi参数必须和$set一起使用
- upsert参数:默认为False;upsert=True则先查询是否存在,存在则更新,不存在就插入
- $set表示指定字段进行跟新
-
更新一条数据;全文档覆盖;存在就更新,不存在就插入
data = {"msg":"这是一条数据",'name':"哈哈"} client.test.test.update({"haha":"heihei"},{"$set":data},upsert=True)
-
更新多条数据;全文档覆盖;存在就更新,不存在就插入
data = {"msg":"这是一条数据",'name':"哈哈"} client.test.test.update({},{"$set":data},multi=True,upsert=True)
-
更新一条数据;指定键值;存在就更新,不存在就插入
data = {"msg":'指定只更新msg___1'} client.test.test.update({},{"$set":data},upsert=True)
-
更新多条数据;指定键值,存在就更新,不存在就插入
data = {"msg":'指定只更新msg___2'} client.test.test.update({},{"$set":data},multi=True,upsert=True)
6、delete_one()删除一条数据
collection.delete_one({"name":"test001"})
7、delete_many()删除全部数据
collection.delete_many({"name":"test001"})