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 相关文章推荐
详解Django缓存处理中Vary头部的使用
Jul 24 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
使用python为mysql实现restful接口
Jan 05 Python
对Python 获取类的成员变量及临时变量的方法详解
Jan 22 Python
python 寻找离散序列极值点的方法
Jul 10 Python
Django rest framework jwt的使用方法详解
Aug 08 Python
django删除表重建的实现方法
Aug 28 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
Oct 11 Python
解决Python安装cryptography报错问题
Sep 03 Python
python中把元组转换为namedtuple方法
Dec 09 Python
Scrapy实现模拟登录的示例代码
Feb 21 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
做个自己站内搜索引擎
2006/10/09 PHP
PHP中防止SQL注入实现代码
2011/02/19 PHP
PHP错误提示的关闭方法详解
2013/06/23 PHP
php获取字段名示例分享
2014/03/03 PHP
详谈PHP编码转换问题
2015/07/28 PHP
php版微信返回用户text输入的方法
2016/11/14 PHP
json-lib出现There is a cycle in the hierarchy解决办法
2010/02/24 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
jQuery实现冻结表格行和列
2015/04/29 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
js倒计时显示实例
2016/12/11 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
Python使用MD5加密字符串示例
2014/08/22 Python
python中的lambda表达式用法详解
2016/06/22 Python
Python字典简介以及用法详解
2016/11/15 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
解析Python3中的Import
2019/10/13 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
python实现猜拳游戏
2020/03/04 Python
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
Linux机考试题
2015/10/16 面试题
GWT的应用有哪两种部署模式
2012/12/21 面试题
房地产融资计划书
2014/01/10 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
2015年三万活动总结
2015/03/25 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
Python实现视频自动打码的示例代码
2022/04/08 Python