python之PyMongo使用总结


Posted in Python onMay 26, 2017

 PyMongo是什么

PyMongo是驱动程序,使python程序能够使用Mongodb数据库,使用python编写而成.

安装

环境:Ubuntu 14.04+python2.7+MongoDB 2.4

先去官网下载软件包,地址点击打开链接.解压缩后进入,使用python setup.py install 进行安装

或者用pip安装pip -m install pymongo

基本使用

创建连接

import pymongo 
client = pymongo.MongoClient('localhost', 27017)

或者可以这样

import pymongo 
client = MongoClient('mongodb://localhost:27017/')

连接数据库

db = client.mydb 
#或者
db = client['mydb']

连接聚集

聚集相当于关系型数据库中的表

collection = db.my_collection 
#或者
collection = db['my_collection']

查看数据库下所有聚集名称

db.collection_names()

插入记录

collection.insert({"key1":"value1","key2","value2"})

删除记录

全部删除

collection.remove()

按条件删除

collection.remove({"key1":"value1"})

更新记录

collection.update({"key1": "value1"}, {"$set": {"key2": "value2", "key3": "value3"}}) 

查询记录

查询一条记录:find_one()不带任何参数返回第一条记录.带参数则按条件查找返回

collection.find_one() 
collection.find_one({"key1":"value1"})

查询多条记录:find()不带参数返回所有记录,带参数按条件查找返回

collection.find() 
collection.find({"key1":"value1"})

查看聚集的多条记录

for item in collection.find():   
  print item

查看聚集记录的总数

print collection.find().count()

查询结果排序

单列上排序

collection.find().sort("key1") # 默认为升序 
collection.find().sort("key1", pymongo.ASCENDING) # 升序 
collection.find().sort("key1", pymongo.DESCENDING) # 降序

多列上排序

collection.find().sort([("key1", pymongo.ASCENDING), ("key2", pymongo.DESCENDING)]) 

实例1:

#!/usr/bin/env python
#coding:utf-8
# Author:  --<qingfengkuyu>
# Purpose: MongoDB的使用
# Created: 2014/4/14
#32位的版本最多只能存储2.5GB的数据(NoSQLFan:最大文件尺寸为2G,生产环境推荐64位)
 
import pymongo
import datetime
import random
 
#创建连接
conn = pymongo.Connection('10.11.1.70',27017)
#连接数据库
db = conn.study
#db = conn['study']
 
#打印所有聚集名称,连接聚集
print u'所有聚集:',db.collection_names()
posts = db.post
#posts = db['post']
print posts
 
#插入记录
new_post = {"AccountID":22,"UserName":"libing",'date':datetime.datetime.now()}
new_posts = [{"AccountID":22,"UserName":"liuw",'date':datetime.datetime.now()},
       {"AccountID":23,"UserName":"urling",'date':datetime.datetime.now()}]#每条记录插入时间都不一样
 
posts.insert(new_post)
#posts.insert(new_posts)#批量插入多条数据
 
#删除记录
print u'删除指定记录:\n',posts.find_one({"AccountID":22,"UserName":"libing"})
posts.remove({"AccountID":22,"UserName":"libing"})
 
#修改聚集内的记录
posts.update({"UserName":"urling"},{"$set":{'AccountID':random.randint(20,50)}})
 
#查询记录,统计记录数量
print u'记录总计为:',posts.count(),posts.find().count()
print u'查询单条记录:\n',posts.find_one()
print posts.find_one({"UserName":"liuw"})
 
#查询所有记录
print u'查询多条记录:'
#for item in posts.find():#查询全部记录
#for item in posts.find({"UserName":"urling"}):#查询指定记录
#for item in posts.find().sort("UserName"):#查询结果根据UserName排序,默认为升序
#for item in posts.find().sort("UserName",pymongo.ASCENDING):#查询结果根据UserName排序,ASCENDING为升序,DESCENDING为降序
for item in posts.find().sort([("UserName",pymongo.ASCENDING),('date',pymongo.DESCENDING)]):#查询结果根据多列排序
  print item
 
#查看查询语句的性能
#posts.create_index([("UserName", pymongo.ASCENDING), ("date", pymongo.DESCENDING)])#加索引
print posts.find().sort([("UserName",pymongo.ASCENDING),('date',pymongo.DESCENDING)]).explain()["cursor"]#未加索引用BasicCursor查询记录
print posts.find().sort([("UserName",pymongo.ASCENDING),('date',pymongo.DESCENDING)]).explain()["nscanned"]#查询语句执行时查询的记录数

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的CURL PycURL使用例子
Jun 01 Python
在Django框架中设置语言偏好的教程
Jul 27 Python
批处理与python代码混合编程的方法
May 19 Python
python递归查询菜单并转换成json实例
Mar 27 Python
Python从使用线程到使用async/await的深入讲解
Sep 16 Python
Python中的取模运算方法
Nov 10 Python
对python自动生成接口测试的示例讲解
Nov 30 Python
Python Web静态服务器非堵塞模式实现方法示例
Nov 21 Python
创建Shapefile文件并写入数据的例子
Nov 26 Python
Django查询优化及ajax编码格式原理解析
Mar 25 Python
pyecharts调整图例与各板块的位置间距实例
May 16 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
Jan 26 Python
Python3安装Pymongo详细步骤
May 26 #Python
Python计时相关操作详解【time,datetime】
May 26 #Python
Python表示矩阵的方法分析
May 26 #Python
Python实现中文数字转换为阿拉伯数字的方法示例
May 26 #Python
Python简单网络编程示例【客户端与服务端】
May 26 #Python
Python编程对列表中字典元素进行排序的方法详解
May 26 #Python
利用Python实现网络测试的脚本分享
May 26 #Python
You might like
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
php中的静态变量的基本用法
2014/03/20 PHP
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
jQuery Ajax 实例全解析
2011/04/20 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
javascript的数据类型、字面量、变量介绍
2012/05/23 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
python读取和保存图片5种方法对比
2018/09/12 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
python实现画五角星和螺旋线的示例
2019/01/20 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
2019/08/29 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
python定义具名元组实例操作
2021/02/28 Python
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
公司前台接待岗位职责
2013/12/03 职场文书
地球上的星星观后感
2015/06/02 职场文书
道士塔读书笔记
2015/06/30 职场文书
小学英语课教学反思
2016/02/15 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python