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通过smpt发送邮件的方法
Apr 30 Python
Python计算两个日期相差天数的方法示例
May 23 Python
Python2.7下安装Scrapy框架步骤教程
Dec 22 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
Feb 26 Python
python和shell获取文本内容的方法
Jun 05 Python
python二维列表一维列表的互相转换实例
Jul 02 Python
python使用递归的方式建立二叉树
Jul 03 Python
Python 获取 datax 执行结果保存到数据库的方法
Jul 11 Python
python相对企业语言优势在哪
Jun 12 Python
基于tensorflow for循环 while循环案例
Jun 30 Python
聊一聊python常用的编程模块
May 14 Python
Python序列化与反序列化相关知识总结
Jun 08 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数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
解析php中call_user_func_array的作用
2013/06/07 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
php简单生成随机数的方法
2015/07/30 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
JQuery里选择超链接的实现代码
2011/05/22 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
vue cli 全面解析
2018/02/28 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
基于node+websocket+html实现腾讯课堂聊天室聊天功能
2020/03/04 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
python不换行之end=与逗号的意思及用途
2017/11/21 Python
python检测IP地址变化并触发事件
2018/12/26 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
python+os根据文件名自动生成文本
2019/03/21 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
中东最大的在线宠物店:Dubai Pet Food
2020/06/11 全球购物
大学生专科毕业生自我评价
2013/11/17 职场文书
岗位竞聘演讲稿
2014/01/10 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
党支部四风整改方案
2014/10/25 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers