热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python使用pymongo操作mongodb库

1,安装python3.5如果python还没有安装,可以直接用yum安装,#不过安装的是2.6versionyuminstall-ypython源码安装3.5wgethttps:

 

1,安装python3.5

如果python还没有安装,可以直接用yum安装,

# 不过安装的是2.6 version
yum install -y python

 

源码安装3.5

wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgztar -xvf Python-3.5.0.tgzcd Python-3.5.0./configure --prefix=/usr/local--enable-sharedmakemake installln -s /usr/local/bin/python3 /usr/bin/python3


 

运行Python之前需要配置库

echo /usr/local/lib >> /etc/ld.so.conf.d/local.conf

ldconfig

 

运行演示

python3 --version

 

部分执行过程:

[root@03_sdwm Python-3.5.0]# echo/usr/local/lib >> /etc/ld.so.conf.d/local.conf[root@03_sdwm Python-3.5.0]# ldconfig[root@03_sdwm Python-3.5.0]#[root@03_sdwm Python-3.5.0]#[root@03_sdwm Python-3.5.0]# python3--versionPython 3.5.0[root@03_sdwm Python-3.5.0]#



 

2,安装pymongo

安装方法有2种,分别是Installing with pip和Installing with easy_install,这里采用Installing witheasy_install参考官方文章:

http://api.mongodb.com/python/current/installation.html#installing-with-easy-install,

 

安装python pymongo

[root@03_sdwm ~]# python3 -m easy_install pymongoSearching for pymongoReading http://pypi.python.org/simple/pymongo/Best match: pymongo 3.4.0Downloading https://pypi.python.org/packages/82/26/f45f95841de5164c48e2e03aff7f0702e22cef2336238d212d8f93e91ea8/pymongo-3.4.0.tar.gz#md5=aa77f88e51e281c9f328cea701bb6f3eProcessing pymongo-3.4.0.tar.gzRunning pymongo-3.4.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ZZv1Ig/pymongo-3.4.0/egg-dist-tmp-LRDmoyzip_safe flag not set; analyzing archive contents...Adding pymongo 3.4.0 to easy-install.pth file Installed /usr/lib/python2.6/site-packages/pymongo-3.4.0-py2.6-linux-x86_64.eggProcessing dependencies for pymongoFinished processing dependencies for pymongo[root@03_sdwm ~]#

 


 

3,使用pymongo操作mongodb

进行一些简单的对mongodb库的操作

#!/usr/bin/env python# -*- coding: utf-8 -*- import pymongoimport datetime  def get_db():    # 建立连接    client = pymongo.MongoClient(host="10.244.25.180", port=27017)    db = client['example']    #或者 db = client.example    return db  def get_collection(db):    # 选择集合(mongo中collection和database都是延时创建的)    coll = db['informations']    print db.collection_names()    return coll  def insert_one_doc(db):    # 插入一个document    coll = db['informations']    information = {"name": "quyang", "age": "25"}    information_id = coll.insert(information)    print information_id  def insert_multi_docs(db):    # 批量插入documents,插入一个数组    coll = db['informations']    information = [{"name": "xiaoming", "age": "25"}, {"name": "xiaoqiang", "age": "24"}]    information_id = coll.insert(information)    print information_id  def get_one_doc(db):    # 有就返回一个,没有就返回None    coll = db['informations']    print coll.find_one()  # 返回第一条记录    print coll.find_one({"name": "quyang"})    print coll.find_one({"name": "none"})  def get_one_by_id(db):    # 通过objectid来查找一个doc    coll = db['informations']    obj = coll.find_one()    obj_id = obj["_id"]    print "_id 为ObjectId类型,obj_id:" + str(obj_id)     print coll.find_one({"_id": obj_id})    # 需要注意这里的obj_id是一个对象,不是一个str,使用str类型作为_id的值无法找到记录    print "_id 为str类型 "    print coll.find_one({"_id": str(obj_id)})    # 可以通过ObjectId方法把str转成ObjectId类型    from bson.objectid import ObjectId     print "_id 转换成ObjectId类型"    print coll.find_one({"_id": ObjectId(str(obj_id))})  def get_many_docs(db):    # mongo中提供了过滤查找的方法,可以通过各种条件筛选来获取数据集,还可以对数据进行计数,排序等处理    coll = db['informations']    #ASCENDING = 1 升序;DESCENDING = -1降序;default is ASCENDING    for item in coll.find().sort("age", pymongo.DESCENDING):        print item     count = coll.count()    print "集合中所有数据 %s个" % int(count)     #条件查询    count = coll.find({"name":"quyang"}).count()    print "quyang: %s"%count def clear_all_datas(db):    #清空一个集合中的所有数据    db["informations"].remove() if __name__ == '__main__':    db = get_db()    my_collection = get_collection(db)    post = {"author": "Mike", "text": "My first blog post!", "tags": ["mongodb", "python", "pymongo"],            "date": datetime.datetime.utcnow()}    # 插入记录    my_collection.insert(post)    insert_one_doc(db)    # 条件查询    print my_collection.find_one({"x": "10"})    # 查询表中所有的数据    for iii in my_collection.find():        print iii    print my_collection.count()    my_collection.update({"author": "Mike"},                         {"author": "quyang", "text": "My first blog post!", "tags": ["mongodb", "python", "pymongo"],                          "date": datetime.datetime.utcnow()})    for jjj in my_collection.find():        print jjj    get_one_doc(db)    get_one_by_id(db)    get_many_docs(db)    # clear_all_datas(db)

  


mysql> show profile for query 4;+--------------------+----------+| Status             | Duration |+--------------------+----------+| executing          | 0.000017 || Sending data       | 0.018048 || executing          | 0.000028 || Sending data       | 0.018125 || executing          | 0.000022 || Sending data       | 0.015749 || executing          | 0.000017 || Sending data       | 0.015633 || executing          | 0.000017 || Sending data       | 0.015382 || executing          | 0.000015 || Sending data       | 0.015707 || executing          | 0.000023 || Sending data       | 0.015890 || executing          | 0.000022 || Sending data       | 0.015908 || executing          | 0.000017 || Sending data       | 0.015761 || executing          | 0.000022 || Sending data       | 0.015542 || executing          | 0.000014 || Sending data       | 0.015561 || executing          | 0.000016 || Sending data       | 0.015546 || executing          | 0.000037 || Sending data       | 0.015555 || executing          | 0.000015 || Sending data       | 0.015779 || executing          | 0.000026 || Sending data       | 0.015815 || executing          | 0.000015 || Sending data       | 0.015468 || executing          | 0.000015 || Sending data       | 0.015457 || executing          | 0.000015 || Sending data       | 0.015457 || executing          | 0.000014 || Sending data       | 0.015500 || executing          | 0.000014 || Sending data       | 0.015557 || executing          | 0.000015 || Sending data       | 0.015537 || executing          | 0.000014 || Sending data       | 0.015395 || executing          | 0.000021 || Sending data       | 0.015416 || executing          | 0.000014 || Sending data       | 0.015416 || executing          | 0.000014 || Sending data       | 0.015399 || executing          | 0.000023 || Sending data       | 0.015407 || executing          | 0.000014 || Sending data       | 0.015585 || executing          | 0.000014 || Sending data       | 0.015385 || executing          | 0.000014 || Sending data       | 0.015412 || executing          | 0.000014 || Sending data       | 0.015408 || executing          | 0.000014 || Sending data       | 0.015753 || executing          | 0.000014 || Sending data       | 0.015376 || executing          | 0.000014 || Sending data       | 0.015416 || executing          | 0.000019 || Sending data       | 0.015368 || executing          | 0.000014 || Sending data       | 0.015481 || executing          | 0.000015 || Sending data       | 0.015619 || executing          | 0.000015 || Sending data       | 0.015662 || executing          | 0.000016 || Sending data       | 0.015574 || executing          | 0.000015 || Sending data       | 0.015566 || executing          | 0.000015 || Sending data       | 0.015488 || executing          | 0.000013 || Sending data       | 0.015493 || executing          | 0.000015 || Sending data       | 0.015386 || executing          | 0.000015 || Sending data       | 0.015485 || executing          | 0.000018 || Sending data       | 0.015760 || executing          | 0.000014 || Sending data       | 0.015386 || executing          | 0.000015 || Sending data       | 0.015418 || executing          | 0.000014 || Sending data       | 0.015458 || end                | 0.000016 || query end          | 0.000019 || closing tables     | 0.000018 || freeing items      | 0.000825 || logging slow query | 0.000067 || cleaning up        | 0.000025 |+--------------------+----------+100 rows in set, 1 warning (0.00 sec)mysql> 




推荐阅读
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 本课程详细介绍了如何使用Python Flask框架从零开始构建鱼书应用,涵盖高级编程技巧和实战项目。通过视频教学,学员将学习到Flask的高效用法,包括数据库事务处理和书籍交易模型的实现。特别感谢AI资源网提供的课程下载支持。 ... [详细]
  • 本文探讨了在Lumen框架中实现自定义表单验证功能的方法与挑战。Lumen的表单验证机制默认返回无状态的JSON格式API响应,这给初学者带来了一定的难度。通过深入研究Validate类,作者分享了如何有效配置和使用自定义验证规则,以提升表单数据的准确性和安全性。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 本文深入探讨了IO复用技术的原理与实现,重点分析了其在解决C10K问题中的关键作用。IO复用技术允许单个进程同时管理多个IO对象,如文件、套接字和管道等,通过系统调用如`select`、`poll`和`epoll`,高效地处理大量并发连接。文章详细介绍了这些技术的工作机制,并结合实际案例,展示了它们在高并发场景下的应用效果。 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
  • 《Python3 网络爬虫开发实战》:高效实用的 MongoDB 文档存储
    NoSQL,全称NotOnlySQL,意为不仅仅是SQL,泛指非关系型数据库。NoSQL是基于键值对的,而且不需要经过SQL ... [详细]
  • 学到了MongoDBMongo是一个基于分布式文件存储的数据库,由C++编写,旨在为Web应用提供可拓展的高性能数据存储解决方案.它介于关系数据库和非关系数据库之间,在非关系数据 ... [详细]
  • 1.打开google浏览器,输入www.toutiao.com,搜索街拍。2.打开开发者选项,network监看加载的xhr,数据是ajax异步加载的 ... [详细]
  • 一、需求:        将MongoDB表中的数据按照时间戳增量抽取到Mysql表中。二、实现方式:   1.kettle    2.pytho ... [详细]
author-avatar
忠讧_136
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有