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自动重试HTTP连接装饰器
Apr 28 Python
Python闭包实现计数器的方法
May 05 Python
Python解析树及树的遍历
Feb 03 Python
python简单验证码识别的实现方法
May 10 Python
如何使用Python 打印各种三角形
Jun 28 Python
Python实现的远程文件自动打包并下载功能示例
Jul 12 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 Python
Python实现CAN报文转换工具教程
May 05 Python
Python图像阈值化处理及算法比对实例解析
Jun 19 Python
如何使用python记录室友的抖音在线时间
Jun 29 Python
Python使用lambda抛出异常实现方法解析
Aug 20 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
Nov 11 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 has encountered an Access Violation
2007/01/15 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
php中header设置常见文件类型的content-type
2015/06/23 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
Laravel 队列使用的实现
2019/01/08 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
提高代码性能技巧谈—以创建千行表格为例
2006/07/01 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
vue3.0实现插件封装
2020/12/14 Vue.js
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
[26:21]浴火之凤-TI4世界冠军Newbee战队纪录片
2014/08/07 DOTA
python 设置文件编码格式的实现方法
2017/12/21 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
什么是Python中的顺序表
2020/06/02 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
女娲补天教学反思
2014/02/05 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
机关作风建设自查报告
2014/10/22 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
值班管理制度范本
2015/08/06 职场文书
Win2008系统搭建DHCP服务器
2022/06/25 Servers