Python与Mongodb数据库交互使用(六)

11.Mongodb与Python的交互
11.1 mgondb与python交互的模块
pip install pymongo
11.2 使用pymongo

11.2.1 导入pymongo并选择要操作的集合

  • 无需权限认证的方式创建连接对象以及集合操作对象

    from pymongo import MongoClient
    
    # 创建数据库连接对象
    client = MongoClient(host, port)
    # 选择数据库和集合
    col = client[db名][集合名]
    
  • 需要权限认证的方式创建连接对象以及集合操作对象

    from pymongo import MongoClient
    
    # 创建数据库连接对象
    client = MongoClient(host, port)
    # 进行认证
    db.authenticate('python1','python1')
    # 选择数据库和集合
    col = client[db名][集合名]
    
11.2 insert()添加数据
  • collection.insert([{数据1},{数据2}])

    # 添加一条数据,直接返回数据结果
    ret = col.insert({"name":"test100","age":23})
    print(ret)
    
    # 添加多条数据,会返回ObjectId对象构成的列表
    item_list = [{name:"test100{}".format(i)} for i in range(10)]
    rets = col.insert(item_list)
    print(rets)
    
    # 返回ObjectId对象构成的列表
    for ret in rets:
        print(ret)
        
    
11.3 find_one()查找一条数据
  • 接受一个字典形式的条件,返回字典形式的整条数据 如果条件为空 则返回第一条
ret = client.test.find_one({name:"test1001"})
print(ret)            # 包含mongodb的ObjectID对象的字典
_ = ret.pop("_id")    # 清除mongodb的ObjectId对象的k,v
print(ret)
11.3 find() 查找全部数据
  • 返回所有满族条件的结果,如果条件为空,则返回全部,结果是一个Cursor游标对象,是一个可迭代的对象,可以类似读文件的指针,但是只能够进行一次读取

    rets = col.find({"name":"test10005"})
    for ret in rets:
        print(ret)
    
11.4 update()更新数据(全文档覆盖或指定键值,更新一条或多条)
  • 语法:collection.update({条件}),{$set:{指定的kv或完整的一条数据}},multi=False/True,upsert=False/True
    • 参数multi:默认为False,表示更新一条;multi=True则更新多条;multi参数必须和$set一起使用
    • 参数upsert:默认为False;upsert=True则先查询是否存在,存在则更新;不存在就插入
    • $set参数:表示指定字段进行更新
  • 更新一条数据;全文档覆盖;存在就更新,不存在就插入
data = {"msg":"这是一条完整的数据1","name":"哈哈"}
col.update({"haha":"heihei"},{"$set":data},upsert=True)
  • 更新多条数据;全文档覆盖;存在就更新,不存在就插入
data = {"msg":"这是一条完整的数据1","name":"哈哈"}
col.update({},{"$set":data},multi=True,upsert=True)
  • 更新一条数据;指定键值;存在就更新,不存在就插入
data = {"msg":"指定只更新msg___1"}
col.update({},{"$set",data},upsert=True)
  • 更新多条数据;指定键值;存在就更新,不存在就插入
data = {"msg":"指定只更新msg___2"}
col.update({},{"$set":data},multi=True,upsert=True)
11.5 delete_one()删除一条数据
col.delete_one({"name":"test10009"})
  • delete_many()删除全部数据
col.delete_many({"name":"test1006"})
12.pymongo模块其他api

http://api.mongodb.com/python/current/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值