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继承和抽象类的实现方法
Jan 14 Python
Golang与python线程详解及简单实例
Apr 27 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
Dec 06 Python
python应用文件读取与登录注册功能
Sep 23 Python
python系列 文件操作的代码
Oct 06 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
Sep 01 Python
python 实现表情识别
Nov 21 Python
如何用python清洗文件中的数据
Jun 18 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中防止直接访问或查看或下载config.php文件的方法
2012/07/07 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
事件模型在各浏览器中存在差异
2010/10/20 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
javascript常用的方法整理
2015/08/20 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python编程实现粒子群算法(PSO)详解
2017/11/13 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
学习python可以干什么
2019/02/26 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
Python 如何对文件目录操作
2020/07/10 Python
python中用ctypes模拟点击的实例讲解
2020/11/26 Python
中国旅游网站:同程旅游
2016/09/11 全球购物
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
新学期决心书
2014/03/11 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
中学生自我评价范文
2015/03/03 职场文书
工伤调解协议书
2016/03/21 职场文书