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简单实现计算过期时间的方法
Jun 09 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
Feb 19 Python
Python数据结构之翻转链表
Feb 25 Python
Python3中类、模块、错误与异常、文件的简易教程
Nov 20 Python
对python .txt文件读取及数据处理方法总结
Apr 23 Python
python实现多人聊天室
Mar 31 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
对python内置map和six.moves.map的区别详解
Dec 19 Python
基于python实现学生信息管理系统
Nov 22 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
Python中if有多个条件处理方法
Feb 26 Python
python实现简单反弹球游戏
Apr 12 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学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
2015/02/25 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
解决webpack无法通过IP地址访问localhost的问题
2018/02/22 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
使用python实现扫描端口示例
2014/03/29 Python
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
python实现简单贪吃蛇游戏
2020/09/29 Python
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
Java平台和其他软件平台有什么不同
2015/06/05 面试题
化学教师教学反思
2014/01/17 职场文书
大学生军训广播稿
2014/01/24 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
党性修养心得体会2016
2016/01/21 职场文书
原生JS实现飞机大战小游戏
2021/06/09 Javascript