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中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 Python
python设计模式大全
Jun 27 Python
浅谈Django学习migrate和makemigrations的差别
Jan 18 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
python 用户交互输入input的4种用法详解
Sep 24 Python
Python箱型图绘制与特征值获取过程解析
Oct 22 Python
利用python实现AR教程
Nov 20 Python
Python填充任意颜色,不同算法时间差异分析说明
May 16 Python
Python unittest基本使用方法代码实例
Jun 29 Python
python 无损批量压缩图片(支持保留图片信息)的示例
Sep 22 Python
教你怎么用Python实现多路径迷宫
Apr 29 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动态创建Flash动画
2006/10/09 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
javascript常用的方法整理
2015/08/20 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
基于postman获取动态数据过程详解
2020/09/08 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
利用Python将文本中的中英文分离方法
2018/10/31 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
浅谈pytorch池化maxpool2D注意事项
2020/02/18 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
HTML5去掉输入框type为number时的上下箭头的实现方法
2020/01/03 HTML / CSS
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
什么是反射
2012/03/17 面试题
自考毕业自我鉴定范文
2013/10/27 职场文书
大学自主招生自荐信
2013/12/16 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
毕业生政审意见范文
2015/06/04 职场文书
开学第一周总结
2015/07/16 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
Python 用户输入和while循环的操作
2021/05/23 Python
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL