PyMongo库是Python对MongoDB操作的接口包,能够实现对MongoDB的增删改查及排序等操作。 直接使用pip安装可能会遇到网络问题导致安装失败,因此,对于Windows系统可以访问https://www.lfd.uci.edu/~gohlke/pythonlibs/ 要使用PyMongo操作MongoDB,首先需要初始化数据库连接。如果MongoDB运行在本地计算机上,而且也没有修改端口或者添加用户名及密码,那么初始化MongoClient的实例的时候可直接写为: 如果MongoDB是运行在其他服务器上面的,那么就需要使用“URI(Uniform Resource Identifier,统一资源标志符)”来指定连接地址。MongoDB URI的格式为: 例如 无需权限认证时可以写为: 有以下两种方式获取数据库和集合 MongoDB的插入操作非常简单。用到的方法为insert_one(参数),插入的参数就是Python的字典。插入一条数据的代码如下。 将多个字典放入列表中,并将列表作为insert_many()方法的参数,即可实现批量插入数据,代码如下。 MongoDB的查找功能对应的方法是: 两个参数的类型均为Python字典,参数可以省略。其中,find_one()一次只返回一条信息。因此用得最多的是find()这个方法。 在不写find()方法的参数时,表示获取指定集合中所有内容的所有字段。 find()方法的第2个参数指定返回内容。这个参数是一个字典,Key就是字段的名称,Value是0或者1,0表示不返回这个字段,1表示返回这个字段。其中_id比较特殊,必须人工指定它的值为0,这样才不会返回。而对于其他数据,应该统一使用返回,或者统一使用不返回。 只有_id是一个例外,必须要指定“’_id’: 0”,才不会返回,否则默认都要返回。下面以一个列表推导式为例: find()方法返回的是一个可以迭代的PyMongo对象,这个对象可以被for循环展开。展开以后可以得到很多个字典。每个字典对应一条记录。所以这个列表推导式也可以改写为for循环: PyMongo也支持大于、小于、大于等于、小于等于、等于、不等于这类逻辑查询。 它们的用法用一个例子来说明: MongoDB支持对查询到的结果进行排序。排序的方法为sort()。它的格式为: 查询一般和find()配合在一起使用。例如: 首先查询所有年龄大于等于29岁、小于等于40岁的记录,然后按年龄来进行排序。sort()方法接收两个参数:第1个参数指明需要以哪一项进行排序;第2个参数-1表示降序,1表示升序。 更新可使用update_one()和update_many()方法。它们的格式为: 前者只更新一条信息,后者更新所有符合要求的信息。这里的参数1和参数2都是字典,都不能省略。参数1用来寻找需要更新的记录,参数2用来更新记录的内容。例如: 删除可使用delete_one()和delete_many()方法。它们的格式为: 这里的参数都是字典,不建议省略。delete_one()方法只删除一条记录,delete_many()删除所有符合要求的记录。 去重使用distinct()方法,其格式为: 这个方法返回一个去重后的列表。 参考书籍:Python连接MongoDB数据库
安装MongoDB
。mongod --dbpath "E:mongodbdatadb" --logpath "E:mongodbdatalogsMongoDB.log" --install --serviceName "MongoDB"
net start MongoDB
net stop MongoDB
PyMongo的安装
直接使用pip安装:
pip install pymongo
利用whl文件安装
。
在这个网站上找到PyMongo,并将whl包下载到本地,然后使用以下命令安装: pip install 下载下来的whl文件名
PyMongo的使用
使用PyMongo初始化数据库
import pymongo client = pymongo.MongoClient(host = 'localhost', port = 27017)
mongodb://用户名:密码@服务器IP或域名:端口
import pymongo client = pymongo.MongoClient('kingname:12345@45.76.110.210:27019')
import pymongo client = pymongo.MongoClient('mongodb://45.76.110.210:27019')
使用PyMongo初始化集合
#方式1 db = client['github'] collection = db['repo'] #方式2 db = client.github collection = db.repo
插入数据
import pymongo client = pymongo.MongoClient(host = 'localhost', port = 27017) db = client['sample'] collection = db['inf'] data = {'id': 123, 'name': 'kingname', 'age': 20, 'salary': 999999} collection.insert_one(data)
more_data = [ {'id': 2, 'name': '张三', 'age': 10, 'salary': 0}, {'id': 3, 'name': '李四', 'age': 30, 'salary': -100}, {'id': 4, 'name': '王五', 'age': 40, 'salary': 1000}, {'id': 5, 'name': '外国人', 'age': 50, 'salary': '未知'}] collection.insert_many(more_data)
查找数据
find(查询条件,返回字段) find_one(查询条件,返回字段)
普通查询方法有以下3种写法。content = collection.find() content = collection.find({'age': 29}) content = collection.find({'age': 29}, {'_id': 0,'name': 1, 'salary': 1})
collection.find({}, {'name': 1, 'salary': 1}) collection.find({}, {'age': 0})
content = [x for x in collection.find({'age': 29}, {'_id': 0, 'name': 1, 'salary': 1})]
content_obj = collection.find({'age': 29}, {'_id': 0, 'name': 1, 'salary': 1}) content = [] for each in content_obj: content.append(each)
逻辑查询
符号
意义
$gt
大于
$lt
小于
$gte
大于等于
$lte
小于等于
$eq
等于
$ne
不等于
collection.find({'age': {'$gt': 29}}) #查询所有age > 29的记录 collection.find({'age': {'$gte':29, '$lte':40}}) #查询29 ≤ age ≤ 40的记录 collection.find({'salary': {'$ne: 29}}) #查询所有salary不等于29的记录
对查询结果排序
handler.find().sort('列名', 1或-1)
collection.find({'age': {'$gte': 29, '$lte': 40}}).sort('age', -1) collection.find({'age': {'$gte': 29, '$lte': 40}}).sort('age', 1)
更新记录
collection.update_one(参数1, 参数2) collection.update_many(参数1, 参数2)
#将第1个年龄为20岁的人的名字改为kingname col.update_one({'age': 20}, {'$set':{'name': 'kingname'}}) #将所有年龄为20岁的人的年龄全部改为30 col.update_many({'age': 20}, {'$set':{'age': 30}})
删除记录
collection.delete_one(参数) collection.delete_many(参数)
例如:#删除第1个名字叫作kingname的人 collection.delete_one({'name': 'kingname'}) #删除所有名字叫作kingname的人 collection.delete_many({'name': 'kingname'})
对查询结果去重
collection.distinct('列名')
《Python爬虫开发:从入门到实践》
《NoSQL数据库入门与实践》
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算