python连接mongo_使用简单的Python连接访问MongoDB

继续来聊MongoDB。

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

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

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

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

目前,MongoDB提供的语言驱动,包括Mongo Shell(原生也需要支持包)、Python、Java、Node.js、PHP、C#、Perl、Ruby和Scala。本篇主要介绍Python的访问方式,记录下来,留待需要的朋友待查。

2、Python驱动安装

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官方文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring与mybatis三种整合方法

原文链接:http://www.cnblogs.com/wangmingshun/p/5674633.html ------------------------------------------------------------------------------------------------- 1、采用MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成…

js常用的2中排序方法:冒泡排序和快速排序

冒泡排序:例如9 4 5 6 8 3 2 7 10 1 首先:9和4比较 4放前 4 9 5 6 8 3 2 7 10 1 4和5比较 4不动 4 9 5 6 8 3 2 7 10 1 4和6比较 4不动 4 9 5 6 8 3 2 7 10 1 4和3比较 3放前 3 9 5 6 8 4 2 7 10 1 3和2比较 2放前 2 9 5 6 8…

java 注册页面正则式_Java使用正则表达式对注册页面进行验证功能实现

本文给大家介绍java使用正则表达式对注册页面进行验证的代码,代码如下所示:package regex;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public class registered {public static void main(String[] args)…

python 编程效率_如何有效提升数据分析效率?五大Python技巧

如何有效提升数据分析效率?相信这是所有数据分析工作者都想解决的问题。本文整理了五大python技巧,分别是Pandas Profiling;使用 Cufflinks 和 Plotly 绘制 Pandas 数据;IPython 魔术命令;Jupyter 中的格式编排&#x…

please select a vaild python interpret

当 JetBrains PyCharm 2017.1.3 x64 遇到 please select a vaild python interpret 错误时: 进入PyCharm setting 选项,搜索 interpret

Grafana分析Nginx日志

配置Groub by -Terms时报错,提示需要设置fielddatatrue,报错内容大概如下: "Fielddata is disabled on text fields by default ... " 解决方法如下: https://www.elastic.co/guide/en/elasticsearch/reference/curren…

php curl json post请求_php post请求发送json对象数据参数

网页中发送请求时,大部分情况都参数以键值组合发送数据的,而一些第三方如java开发的接口中需要发送post请求,请求参数为json类型。既然要发送json数据,首页我们需要在请求头中定义数据类型为json,告诉服务器客服端发送…

python删除链表中的最小元素_LintCode Python 入门级题目 删除链表元素、整数列表排序...

删除链表元素:循环列表head,判断当前指针pre.next的val是否等于val,如果是,当前pre重指向pre.next.next,直至pre.next Null# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.va…

IDEA 更换主题

1、下载主题文件 百度或者谷歌 IDEA themes 网址有可能会变化。目前是 http://color-themes.com 选择自己喜欢的颜色,下载。 2、导入主题文件 File----Import Setting 导入下载的jar文件,一路确认,idea会自动重启。 3、选择主题 点击…

【CentOS 7笔记】cp、mv、文档查看方式

2019独角兽企业重金招聘Python工程师标准>>> 一. copy 常用cp -r/R #拷贝目录,递归 cp -i #覆盖时会提示,默认项 cp -p #保留源目录或源文件的属性 cp -b #源文目与目的文目建立链接,链接 cp -f #强制覆盖 cp -v …

php 情书,php趣味编程 - php输出笛卡尔情书的秘密

/*笛卡尔情书的秘密心形图案的实现。重点是心形函数ra(1-sin),据说这是笛卡尔死前寄出的最后一封情书内容。这里面隐藏着一个刻骨铭心的秘密;“一生只为等待能手绘这个函数给我的人”*/$width 500;$height 500;header("Content-type: image/gif");$img …

python 月报_python实践--月报分析之获取jira缺陷数据

首先安装jira,同其他第三方库,直接可以 easy_install jira。判断jira是否按转成功输入:from jira import JIRA,如果没有报错则说明安装成功;#连接jirajira JIRA(“http://jira地址”,basic_auth (“用户名…

JAVA中的native

native主要用于方法上,简单介绍如下: 1、一个native方法就是一个Java调用非Java代码的接口。一个native方法是指该方法的实现由非Java语言实现,比如用C或C实现。 2、在定义一个native方法时,并不提供实现体(比较像定…

script filename php,PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别

PHP $_SERVER[SCRIPT_FILENAME] 与 __FILE__通常情况下,PHP $_SERVER[SCRIPT_FILENAME] 与 __FILE__ 都会返回 PHP 文件的完整路径(绝对路径)与文件名:echo SCRIPT_FILENAME 为:,$_SERVER[SCRIPT_FILENAME];echo ;echo __FILE__ 为&#xff1…

015. 深入JVM学习—Java引用类型

2019独角兽企业重金招聘Python工程师标准>>> 1. 引用类型划分 强引用:当内存不足时,JVM宁可出现“OutOfMemoryError”错误停止,也需要进行保存,并且不会将此空间回收。 软引用:当内存不足的时候&#xff0…

python人脸关键点识别_用Face++实现人脸关键点检测

最近看了一篇很有意思的文章 http://matthewearl.github.io/2015/07/28/switching-eds-with-python/ ,本来想自己复现一下,后来发现自己太菜,用了一整天只完成了不到一半,最近要找工作了,看书看的有点烦,本…

【东营seo】SEO发展下的大机遇

【东营seo】SEO发展下的大机遇 seo优化越来越难做,很多的人都开始怀疑seo优化没有价值。的确现如今seo优化与十年前比确实不是一个级别的,即便如此,seo优化还是存在其持续发展的机制。  自然搜索排名不再是唯一的竞争点,语音搜索…

手机整屏显示数据php,完美解决手机网页大背景不能铺完整个屏幕的超级代码

html,body{min-height:100%;} 优化 html{min-height:100%;} html,body{min-height:100%;}body{background-image:url(bg_640.jpg);background-size:cover;babackground-repeat:no-repeat;}.main{padding-top:141%;text-align:cenhtml,body{min-height:100%;}优化html{min-heigh…

python linux教程_Python入门系列教程1—linux基础

课程咨询、获取课件、技术交流直接加入博学谷在线学习:631731828课程简介本课程是Python系列入门课程的第一阶段,首先通过介绍不同领域的三种操作系统,操作系统的发展简史以及Linux系统的文件目录结构,让大家对Linux系统有一个简单…

如何解决android studio的模拟器有密码的问题

原文链接:https://jingyan.baidu.com/article/e4d08ffd6a95300fd2f60dcf.html ------------------------ 在使用Android Studio的时候,创建的模拟器开机竟然有密码,提示:to start android,enter your password,困扰了好长时间&am…