睡了大半天,终于有时间整理下拖欠的MongoDB的封装啦。

首先我们先进行下数据库的连接:

        conn = MongoClient('localhost',27017)   # 建立连接

        result = conn.list_database_names() # 查看mongodb里面有哪些数据库
print(result) db = conn['test'] # 选择数据库,当你选择的不存在的时候,会自动帮你创建
print(db.collection_names()) # 查看当前数据库里面有哪些集合 self.collection = db['table'] # 选择集合,当集合不存在也会自动创建

那么这个时间, 我简单操作下:

ps:本段代码为废话,可直接略过。test调试

data = {"a":1, "b":2}
# collection.insert(data)
collection.insert_one(data) # collection.insert([{"a":1, "b":2}, {"a":1, "b":2}])
collection.insert_many([{"a":1, "b":2}, {"a":1, "b":2}]) # result = collection.find_one() # 查看一条数据
# key = collection.find_many() # 查看一条数据 result = collection.find() # 查看所有 for data in result:
print(data) # collection.remove() # 删除所有
collection.delete_one({"a":1})
result = collection.find() # 查看所有 for data in result:
print(data)

这里进入正题吧。

先看下,mongoDB的方法都有哪些:

详细的封装代码如下:

from pymongo import MongoClient
import pymongo
'''
查找一条文档: find_one()
查找所有:find()
添加一条文档:insert_one
添加多条:insert_many()
删除一条:delete_one()
删除多条:delete_many()
修改一条文档: update_one()
修改多条: update_many()
''' class MongoDB(): def __init__(self): conn = MongoClient('localhost',27017) # 建立连接 result = conn.list_database_names() # 查看mongodb里面有哪些数据库
print(result) db = conn['test'] # 选择数据库,当你选择的不存在的时候,会自动帮你创建
print(db.collection_names()) # 查看当前数据库里面有哪些集合 self.collection = db['table'] # 选择集合,当集合不存在也会自动创建 def insertDB(self, data):
"""直接使用insert() 可以插入一条和插入多条 不推荐 明确区分比较好"""
return self.collection.insert_many(data) if len(data) > 1 else self.collection.insert_one(data) def findDB(self): # 查询全部
res = self.collection.find()
for data in res:
print(data)
def find_oneDB(self, data): # 单条查询
res = self.collection.find_one(data)
print(res) def removeDB(self): # 删除全部
self.collection.remove() def deleteDB(self, data): # 删除单条
self.collection.delete_one(data) def deleteManyDB(self): # 删除多条
self.collection.delete_many() def updateOneDB(self, fifler, updata): # 单条编辑
res = self.collection.update_one(fifler, updata)
return res
def updateManyDB(self, fifler, updata): # 批量编辑
res = self.collection.update_many(fifler, updata)
return res if __name__ == '__main__':
conn = MongoDB() # 以下为代码调试,我总得调试完成吧,要不会被骂的。
# data = {"name":"456"}
conn.insertDB([{"a":6, "b":6}, {"a":7, "b":7}])
# conn.removeDB({"name":'456'})
conn.deleteDB({"a":6, "b":6})
# conn.updateOneDB({"a":7}, {"b":9})
# conn.updateOneDB({"a":7}, {"$set":{"b":9}})
conn.updateManyDB({"a":7}, {"$set":{"b":9}})
conn.findDB()

到这关于mongoDB的知识,整理完毕。

另外关于updata参数报错:ValueError: update only works with $ operators

解决办法:

conn.updateManyDB({"a":7}, {"$set":{"b":9}})

作者:含笑半步颠√

博客链接:https://www.cnblogs.com/lixy-88428977

声明:本文为博主学习感悟总结,水平有限,如果不当,欢迎指正。如果您认为还不错,欢迎转载。转载与引用请注明作者及出处。

Python与MogoDB交互的更多相关文章

  1. Python和Excel交互

    Python和Excel交互 使用的python包为XlsxWriter 下载的链接 https://pypi.python.org/pypi/XlsxWriter 初级的例子: def write_ ...

  2. 【转】Python之系统交互(subprocess)

    [转]Python之系统交互(subprocess) 本节内容 os与commands模块 subprocess模块 subprocess.Popen类 总结 我们几乎可以在任何操作系统上通过命令行指 ...

  3. Python与Mysql交互

    #转载请联系 在写内容之前,先放一张图,bling- 这张图算是比较详细的表达出了web开发都需要什么.用户访问网页,就是访问服务器的网页文件.这些网页文件由前端工程师编写的.服务器通常用nginx/ ...

  4. Python实现用户交互,显示省市县三级联动的选择

    题目:Python实现用户交互,显示省市县三级联动的选择 定义的字典为: dic = { "江西": { "萍乡": ["安源", &quo ...

  5. 二十、Python与Mysql交互

    先安装一个python与MySQL交互的包:MySQL-python $ gunzip MySQL-python-1.2.2.tar.gz $ tar -xvf MySQL-python-1.2.2. ...

  6. python与C++交互

    python和C++能进行有效的交互,c++调用Python的一些小用法 写了一个python脚本导入发生异常,可能是编码问题(如存在中文),Python默认的是ASCII可加上:#!/usr/bin ...

  7. Python之系统交互(subprocess)

    本节内容 os与commands模块 subprocess模块 subprocess.Popen类 总结 我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell ...

  8. Python的用户交互程序及格式化输出

    1.  用户输入 在Python 3 中,用户输入用input()函数即可实现用户交互程序. 例如,我们根据程序提示输入用户名和密码,并且打印输入的信息. 2. 字符串格式化输出 例如,我们根据程序提 ...

  9. Python与RabbitMQ交互

    RabbitMQ 消息队列 成熟的中间件RabbitMQ.ZeroMQ.ActiveMQ等等 RabbitMQ使用erlang语言开发,使用RabbitMQ前要安装erlang语言 RabbitMQ允 ...

随机推荐

  1. 【JZOJ5551】【20190625】旅途

    题目 \(n\)个点\(m\)条边的无向图,一条路径的代价定义为路径上前\(k\)大边的边权和 对于$k = n \to 1 $,求1-n的最短路 \(n,m \le 3000 \ , \ w_i \ ...

  2. orm-1

    - ORM什么是? 类名 ---> 数据库表 对象 ---> 记录 对象.属性 ---> 字段 - ORM的优缺点: 优点: 可跨平台,可以通过对象.属性取值,对象.方法,让该方法内 ...

  3. SDL

    SDL介绍 SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开发者只要用相同或是相似的代 ...

  4. 多浏览器书签同步插件EverSync

    有时上网时会遇到浏览器不能正常显示的问题.(比如我的火狐浏览器无法正确显示微信公众号管理后台,在chrome上可以正常显示),所以我的电脑里安装了chrome和firefox两个浏览器.但是时间长了, ...

  5. zabbix 同步ldap帐号脚本

    1.界面配置ldap验证(略) 2.mysql导入ldap帐号信息 #!/usr/bin/env python# -*- coding:utf-8 -*- import pymysqlimport c ...

  6. WDM驱动改可手动加卸载的NT驱动

    WDM驱动改可手动加卸载的NT驱动 测试工具:osrloader 把一个WDM类型的驱动改成可动态加载/卸载,需要做以下2个修改: 1. 把SOURCES文件夹中的DRIVERTYPE=WDM去掉 2 ...

  7. 【Alpha】“北航社团帮”小程序v1.0测试报告

    目录 测试计划.过程和结果 后端单元测试 后端压力测试 测试结果 指标解释 前端测试 授权登录与权限检查 功能测试 兼容性测试 性能测试 回答课程组问题 测试中发现的bug 场景测试 测试矩阵 出口条 ...

  8. SpringBoot——配置文件加载位置及外部配置加载顺序

    声明 本文部分转自:SpringBoot配置文件加载位置与优先级 正文 1. 项目内部配置文件 spring boot 启动会扫描以下位置的application.properties或者applic ...

  9. 微信小程序支付接口之Django后台

    本文链接:https://blog.csdn.net/qq_41860162/article/details/89098694Python3-django-微信小程序支付接口调用工具类生成一系列微信官 ...

  10. Python爬虫实例项目

    WechatSogou [1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典. DouBanSpider [2]- ...