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 相关文章推荐
Windows下用py2exe将Python程序打包成exe程序的教程
Apr 08 Python
python解决Fedora解压zip时中文乱码的方法
Sep 18 Python
python之Socket网络编程详解
Sep 29 Python
对python指数、幂数拟合curve_fit详解
Dec 29 Python
python读取文件名并改名字的实例
Jan 07 Python
python3调用windows dos命令的例子
Aug 14 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
Tensorflow限制CPU个数实例
Feb 06 Python
GDAL 矢量属性数据修改方式(python)
Mar 10 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 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中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php图片缩放实现方法
2014/02/20 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
javascript读取xml
2006/11/04 Javascript
两个DIV等高的JS的实现代码
2007/12/23 Javascript
jQuery $.each的用法说明
2010/03/22 Javascript
添加JavaScript重载函数的辅助方法2
2010/07/04 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
vue.js实例todoList项目
2017/07/07 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
python3.6编写的单元测试示例
2019/08/17 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
Python爬取酷狗MP3音频的步骤
2021/02/26 Python
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
介绍一下Java中的Class类
2015/04/10 面试题
请解释流与文件有什么不同
2016/07/29 面试题
酒店公关部经理岗位职责
2013/11/24 职场文书
作文批改评语大全
2014/04/23 职场文书
推荐信格式范文
2014/05/09 职场文书
小学生运动会报道稿
2014/09/12 职场文书
村委会贫困证明范本
2014/09/17 职场文书
向女朋友道歉的话
2015/01/20 职场文书
放飞理想主题班会
2015/08/14 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python