Fork me on GitHub

mongo安装与使用

1. PyMongo的安装

直接使用pip安装:

pip  install  pymongo

2. PyMongo的使用

(1)使用PyMongo初始化数据库
要使用PyMongo操作MongoDB,首先需要初始化数据库连接。如果MongoDB运行在本地计算机上,而且也没有修改端口或者添加用户名及密码,那么初始化MongoClient的实例的时候就不需要带参数,直接写为:

from  pymongo  import  MongoClient  
client  =  MongoClient()

如果MongoDB是运行在其他服务器上面的,那么就需要使用“URI(Uniform Resource Identifier,统一资源标志符)”来指定连接地址。MongoDB URI的格式为:
mongodb://用户名:密码@服务器IP或域名:端口
例如:

from  pymongo  import  MongoClient  
client  =  MongoClient('mongodb://kingname:12345@45.76.110.210:27019')

如果没有设置权限验证,就不需要用户名和密码,那么可以写为:

from  pymongo  import  MongoClient  
client  =  MongoClient('mongodb://45.76.110.210:27019')

PyMongo初始化数据库与集合有两种方式。
方式1:

from  pymongo  import  MongoClient  
client  =  MongoClient()  
database=  client.Chapter6  
collection  =  database.spider

需要注意,使用方式1的时候,代码中的“Chapter6”和“spider”都不是变量名,它们直接就是库的名字和集合的名字。
方式2:

from  pymongo  import  MongoClient  
client  =  MongoClient()  
database  =  client['Chapter6']    
collection  =  db1['spider']

使用方式2时,在方括号中指定库名和集合名。这种情况下,方括号里除了直接写普通的字符串以外,还可以写一个变量。例如:

db_name  =  'Chapter6'  
col_name  =  'spider'  
database  =  client[db_name]  
collection  =  client[col_name]

MongoDB运行在45.76.110.210这台计算机的27017端口上,那么PyMongo的代码就要修改为:

from  pymongo  import  MongoClient  
client  =  MongoClient('mongodb://45.76.110.210:27017  ')  
database  =  client['Chapter6']    
collection  =  db1['spider']

建议在非必要情况下不允许外网访问MongoDB

2)插入数据
MongoDB的插入操作非常简单。用到的方法为insert(参数),插入的参数就是Python的字典。插入一条数据的代码如下。

from  pymongo  import  MongoClient  
client  =  MongoClient()  
database  =  client['Chapter6']    
collection  =  db1['spider']    
data  =  {'id':  123,  'name':  'kingname',  'age':  20,  'salary':  999999}  
collection.insert(data)

(3)普通查找
MongoDB的查找功能对应的方法是:
find(查询条件, 返回字段) find_one(查询条件,返回字段)
两个参数的类型均为Python字典,参数可以省略。其中,find_one()一次只返回一条信息。因此用得最多的是find()这个方法。
普通查询方法有以下3种写法。

content = collection.find()
content = collection.find({'age': 29})
content = collection.find({'age': 29}, {'_id': 0, 'name': 1, 'salary': 1})

(8)对查询结果去重
去重使用distinct()方法,其格式为:

collection.distinct('列名')
posted @ 2021-08-21 17:14  草莓冰棍๑  阅读(145)  评论(0编辑  收藏  举报