作者:WenWu_Both
出处:http://blog.csdn.net/wenwu_both/article/
版权:本文版权归作者和CSDN博客共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文链接;否则必究法律责任
上篇文章我们介绍了MongoDB数据库的安装及相关配置,今天我们通过Python来操作MongoDB。
(1)MongoDB数据库用户管理
与其他数据库(Oracle,Mysql)等类似,MongoDB也提供了用户管理的功能,还记得上篇文章里的.conf文件吗?再贴一遍:
# 设置数据目录的路径
dbpath = D:\MongoDB\data\db
# 设置日志信息的文件路径
logpath = D:\MongoDB\log\MongoDB.log
# 打开日志输出操作
logappend = true
# 用户管理
noauth = true
# 设置端口号
port = 27001
其中,用户管理:“noauth=true”即表示不启用用户管理,下面我们介绍如何启用用户管理并创建用户。
1、切换到需要管理的数据上,例:
use transdata # 此时切换到数据库transdata
2、创建用户,例:
db.createUser({
"user":"hello",
"pwd":"python",
"roles":[{"role":"readWrite","db":"transdata"}]
}
)
出现上图即表明此时我们创建了hello账户,密码为Python。
3、修改启动文件
将启动文件MongoDB.conf中用户管理项改为
auth = true # 此时启动了用户管理
4、重新连接数据库
完成上述步骤,我们利用“mongo –port=27001”命令仍然可以连接上数据库,但是执行不了具体操作,会报错,如下图:
出现上图则表明用户管理启动成功,此时我们需要利用以下命令连接数据库:
mongo localhost:27001/transdata -u hello -p python
此时,我们发现我们成功连接到数据库,且可以对数据库进行相关操作。
注:修改用户密码的命令为db.changeUserPassword(“数据库名”,”新密码”),但请先将.conf的用户管理模式关掉,密码修改成功后再改回来。
(2)Python连接MongoDB
Python与MongoDB的爱恨情仇都在pymongo包里,具体包的引用我就不就介绍了。
PS:推荐用Anaconda来集成Python开发环境,超好用,可参见Anaconda安装及使用教程
Python连接数据库有两种方式:MongoClient及Connection,从这两个类的继承来看,connection是继承了MongoClient的,建议使用MongoClient而不是使用Connection。(也就是说,MongoClient可以使用方法Connection都可以使用)。
1、无用户验证
# 导入相应包
from pymongo import MongoClient
# 建立数据库连接
client = MongoClient('localhost',port)
# 连接目标数据库
db = client.dbName
# 连接集合
col = client.CollectionName
2、用户验证连接
# 导入相应包
from pymongo import MongoClient
# 建立和数据库系统的连接,创建Connection时,指定host及port参数
client = MongoClient('localhost', port,dbName)
# 连接目标数据库
db = client.dbName
# 数据库用户验证
db.authenticate("account", "password")
#连接集合
col = client.CollectionName
# 打印集合第1条记录
print col.find_one()
我们执行用户验证连接,成功后如下图:
自此,我们就通过Python连接上MongoDB的目标数据库了,是不是敲开心,哈哈。。。
(3)pymongo的相关命令
连接上数据库就可以对数据库中的数据进行操作了,cmd模式下,数据库的相关操作我们就不赘述了,可参见MongoDB 教程,同时推荐个特别好的视频教程,对我帮助很大,哈哈。。。
本节主要认识几个常用的pymongo命令:
1、插入数据
db.col.insert_one() # 插入单个文档
db.col.insert_many() # 插入多个文档
2、查询数据
a.全部查询
cursor = db.col.find() # 注意返回的是查询结果的游标,这是产生文档的迭代对象
for doc in cursor:
print doc
b.条件查询
cursor = db.col.find({field1:value1,field2:value2,...}) # 返回条件游标
for doc in cursor:
print doc # 迭代游标打印文档
c.嵌入式文档中查询
cursor = db.col.find({field1.field2...field3...:value})
3、结果排序
通过追加sort()方法进行查询,其中:
pymongo.ASCENDING 表示升序排序
pymongo.DESCENDING
如果要通过多个键星星排序,可以传递键的列表和以及对应的排序类型的列表。举例来说,如下操作将返回restaurants集合中所有的文档,并且先通过borough字段进行升序排序,然后在每个borough内,通过”address.zipcode”字段进行升序排序。
import pymongo
cursor = db.restaurants.find().sort([
("borough", pymongo.ASCENDING),
("address.zipcode", pymongo.ASCENDING)
])
4、更新数据
update_one()和update_many()
db.col.update_one() # 更新单个文档
db.col.update_many() # 更新多个文档
5、删除文档
db.col.delete_one({}) # 删除单个文档
db.col.delete_many({}) # 删除所有文档
还有数据聚合及数据索引等操作函数,这里不再赘述,具体可参见博客:
PyMongo官方文档翻译
好的,本篇就介绍到这了,希望能给大家带来帮助,你的支持将是我最大的动力!