睡了大半天,终于有时间整理下拖欠的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. luogu P2353 背单词

    二次联通门 : luogu P2353 背单词 一眼看过去, 卧槽,AC自动机板子题 写完后T成SB 卧槽10^6 做个篮子啊 重构思路... 恩..Hash + 莫队... 恶心啊.. 找xxy d ...

  2. 第4组 Alpha冲刺(1/4)

    队名:斗地组 组长博客:地址 作业博客:Alpha冲刺(1/4) 各组员情况 林涛(组长) 过去两天完成了哪些任务: 1.安排好各个组员的任务 2.收集各个组员的进度 3.写页面 4.写博客 展示Gi ...

  3. linux命令之------touch命令

    touch命令 1)    作用:用于修改文件或目录的时间属性,包括存取时间和更改时间.若文件不存在,系统会建立一个新的文件. 2)    -a:改变档案的读取时间记录: 3)    -m:改变档案的 ...

  4. javascript利用canvas解析图片中的二维码

    本方法两种应用方式:一种使用canvas解析本站图片中的二维码,canvas有同源策略限制,只能处理本站图片.另一种处理文件选择中的图片二维码. 第一种使用场景可以换成像微信中一样,长按图片识别二维码 ...

  5. 一起学Makefile(六)

    命令的回显: 通常,make在执行命令之前都会把执行的命令进行输出,例如: 关闭命令回显有以下几种方式: 每个需要关闭回显的命令行之前加上”@”符号: 执行make时机上参数-s 或 –slient进 ...

  6. nohup: 无法运行命令"java": 没有那个文件或目录

    问题 在一个Linux服务器上有shell 脚本如下: nohup java -jar test.jar >> ./nohup.out 2>&1 & 直接执行脚本 s ...

  7. ESB企业服务总线到底是什么东西呢?

    顾名思义,企业服务总线(ESB)就是一条企业架构的总线,所有的企业服务都挂接到该总线上对外公布,企业服务总线负责管理服务目录,解析服务请求者的请求方法.消息格式,并对服务提供者进行寻址,转发服务请求. ...

  8. cmd find命令用法

    Windows命令行(cmd)下快速查找文件(类似Linux下find命令) 2015年04月11日 10:50:43 开水 阅读数 62240 标签: 命令行cmdwindows 更多 个人分类:  ...

  9. shell (7)if 表达式

    文件表达式if [ -f file ] 如果文件存在if [ -d … ] 如果目录存在if [ -s file ] 如果文件存在且非空if [ -r file ] 如果文件存在且可读if [ -w ...

  10. Centos新服务器需要安装的必备软件包

    yum install -y gcc gcc-c++ kernel-devel yum install -y pcre pcre-devel yum install -y zlib zlib-deve ...