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验证企业工商注册码
Oct 25 Python
python+influxdb+shell编写区域网络状况表
Jul 27 Python
python实现旋转和水平翻转的方法
Oct 25 Python
利用pandas合并多个excel的方法示例
Oct 10 Python
基于Python 中函数的 收集参数 机制
Dec 21 Python
tensorflow模型继续训练 fineturn实例
Jan 21 Python
python内打印变量之%和f的实例
Feb 19 Python
Python基于stuck实现scoket文件传输
Apr 02 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 Python
Python项目实战之使用Django框架实现支付宝付款功能
Feb 23 Python
【超详细】八大排序算法的各项比较以及各自特点
Mar 31 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
Apr 24 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导出CSV抽象类实例
2014/09/24 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
详解JavaScript函数
2015/12/01 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
vue实现循环切换动画
2018/10/17 Javascript
原生js实现购物车功能
2020/09/23 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
centos系统升级python 2.7.3
2014/07/03 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
pycharm新建一个python工程步骤
2019/07/16 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
python 实现Harris角点检测算法
2020/12/11 Python
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
中海讯通笔试题
2015/09/15 面试题
java程序员面试交流
2012/11/29 面试题
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
办公室年终个人自我评价
2013/10/28 职场文书
大学生涯自我鉴定
2014/01/16 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
2014年招生工作总结
2014/11/26 职场文书
2015年药店工作总结
2015/04/20 职场文书
小学美术教学反思
2016/02/17 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
使用Java去实现超市会员管理系统
2022/03/18 Java/Android
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL