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 functools模块学习总结
May 09 Python
Python随手笔记之标准类型内建函数
Dec 02 Python
python3连接MySQL数据库实例详解
May 24 Python
python 简单照相机调用系统摄像头实现方法 pygame
Aug 03 Python
详解python破解zip文件密码的方法
Jan 13 Python
Python变量作用域LEGB用法解析
Feb 04 Python
pycharm 更改创建文件默认路径的操作
Feb 15 Python
Django单元测试中Fixtures用法详解
Feb 25 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 Python
Keras多线程机制与flask多线程冲突的解决方案
May 28 Python
python+opencv实现视频抽帧示例代码
Jun 11 Python
Python几种酷炫的进度条的方式
Apr 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
apache+php+mysql安装配置方法小结
2010/08/01 PHP
php堆排序实现原理与应用方法
2015/01/03 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
Ajax基础知识详解
2017/02/17 Javascript
JavaScript订单操作小程序完整版
2017/06/23 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
Web服务器框架 Tornado简介
2014/07/16 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
pycharm安装和首次使用教程
2018/08/27 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
Django之PopUp的具体实现方法
2019/08/31 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
Python中常用的os操作汇总
2020/11/05 Python
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
数控专业大学生的自我鉴定
2013/11/13 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
初中生评语大全
2014/04/24 职场文书
公司建议书怎么写
2014/05/15 职场文书
作风建设演讲稿
2014/05/23 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
婚庆答谢词
2015/01/04 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
中英文求职信范文
2015/03/19 职场文书
个人收入证明范本
2015/06/12 职场文书
高三物理教学反思
2016/02/20 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL
解决redis批量删除key值的问题
2022/03/23 Redis