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之总结参数的传递
Oct 10 Python
python检测某个变量是否有定义的方法
May 20 Python
python检查字符串是否是正确ISBN的方法
Jul 11 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
使用python画社交网络图实例代码
Jul 10 Python
django实现用户注册实例讲解
Oct 30 Python
python实现高斯(Gauss)迭代法的例子
Nov 20 Python
浅析python,PyCharm,Anaconda三者之间的关系
Nov 27 Python
python 实现二维字典的键值合并等函数
Dec 06 Python
Python Selenium参数配置方法解析
Jan 19 Python
在matplotlib中改变figure的布局和大小实例
Apr 23 Python
Python 实现一个计时器
Jul 28 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支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
PHP 微信支付类 demo
2015/11/30 PHP
php生成无限栏目树
2017/03/16 PHP
PHP 8新特性简介
2020/08/18 PHP
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
vue-star评星组件开发实例
2018/03/01 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
Vue数据绑定简析小结
2019/05/07 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
Python通过poll实现异步IO的方法
2015/06/04 Python
python操作redis的方法
2015/07/07 Python
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
Python iter()函数用法实例分析
2018/03/17 Python
Python中文件的读取和写入操作
2018/04/27 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
学生发电厂实习自我鉴定
2013/09/22 职场文书
小学后勤管理制度
2014/01/14 职场文书
初中作文评语集锦
2014/12/25 职场文书
普宁寺导游词
2015/02/04 职场文书
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL
索尼ICF-5900W收音机测评
2022/04/24 无线电