ITPub博客

使用简单的Python连接访问MongoDB

原创 NoSQL 作者:realkid4 时间:2017-07-22 12:36:27 2 删除 编辑

 

 

继续来聊MongoDB

 

MongoDB作为了一个数据库产品软件,除了服务器Server端进程(mongod)外,还提供了比较丰富的访问连接接口。我们最常用的就是两个类型,一个是原生mongo shell,另一个就是应用程序语言访问接口。

 

1、从Mongo Shell到应用程序访问接口

 

Mongo ShellMongoDB官方提供的数据库访问接口程序,类似于OraclesqlplusMysqlmysql程序。应该说,Mongo shell对于MongoDB的连接、访问和功能操作是最好的。所有与MongoDB相关的管理、开发和数据访问职能,都可以通过Mongo Shell进行实现。

 

另一类就是应用程序访问接口,也可以理解为编程语言接口。同其他所有数据库相同,针对每个开发语言,MongoDB都有专门的访问驱动Driver程序(或者称为Module)进行支持。但是,由于不同语言在语法、语义和程序组织方式上的差异,使用程序访问接口的时候,和标准Mongo Shell是有一些差别。这就是为什么在MongoDB官方文档中,对于每个操作都提供多种程序语言版本的原因。

 

目前,MongoDB提供的语言驱动,包括Mongo Shell(原生也需要支持包)、PythonJavaNode.jsPHPC#PerlRubyScala。本篇主要介绍Python的访问方式,记录下来,留待需要的朋友待查。

 

2Python驱动安装

 

Python是目前比较流行的程序设计语言,特别是在人工智能AI和大数据分析处理上,市场空间是比较大的。MongoDB是比较流行的NOSQL数据库解决方案,两者结合的场景非常多。

 

对于Python而言,组织程序是以Module的方式进行。要在本地进行开发,需要本地在Python标准库基础上,添加对于MongoDB的支持。目前,比较常用的Mongodb包为pymongo

 

如果是Windows环境下,如果已经安装好Python开发环境JDK,只需要调用esay_install程序就可以自动完成下载。

 

 

C:\Users\admin>easy_install pymongo

Searching for pymongo

Reading https://pypi.python.org/simple/pymongo/

Best match: pymongo 3.4.0

Downloading https://pypi.python.org/packages/e7/7c/6c6fa7f0c416e227445979403f14c

4fcfc5960f7c220e8ad0370197fe87a/pymongo-3.4.0-py3.5-win-amd64.egg#md5=0fa1f3d995

42f032fc8940d8d53d7559

Processing pymongo-3.4.0-py3.5-win-amd64.egg

creating c:\program files\python35\lib\site-packages\pymongo-3.4.0-py3.5-win-amd

64.egg

Extracting pymongo-3.4.0-py3.5-win-amd64.egg to c:\program files\python35\lib\si

te-packages

Adding pymongo 3.4.0 to easy-install.pth file

 

Installed c:\program files\python35\lib\site-packages\pymongo-3.4.0-py3.5-win-am

d64.egg

Processing dependencies for pymongo

Finished processing dependencies for pymongo

 

 

在国内下载时间可能比较长,而且经常会有Timeout的情况出现。多测试几次,或者直接到Python官网上下载安装包就能解决。下载之后的pymongo包,被自动放在标准Python库里面。注意:这个时候即使是使用Eclipse插件进行开发,也会自动的感应到最新的库变化,即时生效。

 

3、简单开发实例

 

下面进行一个简单地实例。当前目标数据库test上,包括pyinsert这个集合collection

 

 

> show collections

blog

pyinsert

xl

 

> db.pyinsert.find().count();

0

 

 

下面是插入的python记录脚本

 

 

from pymongo import MongoClient –导入包模块

from bson.objectid import ObjectId

 

connect = MongoClient('172.16.19.143',27017)

db = connect.test –对应数据库

 

operList = [{"name":"Ttest", "age":10},{"name":"Mark", "age":12},

            {"name":"Lucy", "age":10},{"name":"Tom", "age":32}]

 

res = db.pyinsert.insert_many(operList)  --批量插入

print(res)

 

 

注意:每个语言落实MongoDB语法的时候,有一些差别,具体需要参考官方解释。上面的实例中,介绍了连接语句、组织Document Array和批量插入。插入后,结果如下:

 

 

> db.pyinsert.find();

{ "_id" : ObjectId("5972d32dc3e2cc1d108511b7"), "age" : 10, "name" : "Ttest" }

{ "_id" : ObjectId("5972d32dc3e2cc1d108511b8"), "age" : 12, "name" : "Mark" }

{ "_id" : ObjectId("5972d32dc3e2cc1d108511b9"), "age" : 10, "name" : "Lucy" }

{ "_id" : ObjectId("5972d32dc3e2cc1d108511ba"), "age" : 32, "name" : "Tom" }

 

 

检索数据脚本:

 

from pymongo import MongoClient

from bson.objectid import ObjectId

 

connect = MongoClient('172.16.19.143',27017)

db = connect.test

 

for data in db.pyinsert.find():

print(data)

 

 

操作结果:

 

 

{'_id': ObjectId('5972d32dc3e2cc1d108511b7'), 'name': 'Ttest', 'age': 10}

{'_id': ObjectId('5972d32dc3e2cc1d108511b8'), 'name': 'Mark', 'age': 12}

{'_id': ObjectId('5972d32dc3e2cc1d108511b9'), 'name': 'Lucy', 'age': 10}

{'_id': ObjectId('5972d32dc3e2cc1d108511ba'), 'name': 'Tom', 'age': 32}

 

 

4、结论

 

本篇针对python语言使用MongoDB的接口,进行了简单介绍。更多的语法和使用,建议参考MongoDB官方文档。

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17203031/viewspace-2142425/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
求道~

注册时间:2010-11-30

  • 博文量
    545
  • 访问量
    7514544