一、Python通过PyMongo库实现对MongoDB的使用
代码:
From pymongo import MongoClient
# 链接mongodb数据库并初始化数据库
方式一:
Client = MongoClient (‘mongodb://usr:password@uri’) 例:(‘mongodb://kingname:123456@192.168.123.45’)
Database = client.Chapter6 #Chapter6 为数据库名字
Collection = database.spider #spider 为集合名字
方式二:
Client = MongoClient (‘mongodb://usr:password@uri’) 例:(‘mongodb://kingname:123456@192.168.123.45’)
Database = client[‘chapter6’] #chapter6为指定的数据库名字,方括号中除了写指定的字符串外,也可写成一个指定的变量
Collection = database[‘spider’] #spider为指定的集合名字,方括号中除了写指定的字符串外,也可写成一个指定的变量
(当需要批量操作数据库时可用方式二)
1、插入数据insert(参数),参数为python字典的样式在这里也是的在这里也是可用这人生日快日用放入
s
Client = MongoClient (‘mongodb://usr:password@uri’) 例:(‘mongodb://kingname:123456@192.168.123.45’)
Database = client[‘chapter6’]
Collection = database[‘spider’]
Data = {‘id’:123,’name’:’kingname’,’age’:28,’salary’:99999}
Collection.insert(data) #插入数据库后MongoDB会自动生成一个_id代表数据插入的时间,不重复,始终递增
实现批量插入数据
more_data = [{‘id’:1,’name’:’张三’,’age’:23,’salary’:1000},
{‘id’:2,’name’:’李四’,’age’:24,’salary’:2000},
{‘id’:3,’name’:’王五’,’age’:25,’salary’:3000}]
Collection.insert(more_data)
2、查找数据
find(查找条件,返回字段)
find_one(查找条件,返回字段)#一次只返回一条信息
Client = MongoClient (‘mongodb://usr:password@uri’) 例:(‘mongodb://kingname:123456@192.168.123.45’)
Database = client[‘chapter6’]
Collection = database[‘spider’]
Data = {‘id’:123,’name’:’kingname’,’age’:28,’salary’:99999}
‘’’查找的三种写法’’’
connect = collection.find() #不加参数,表示获取指定集合中所有内容的所有字段
connect = collection.find({‘age’:29}) #只查询所有年龄为29的人
connect = collection.find({‘age’:29},{‘_id’:0,’name’:1,’salary’:1) #查询所有年龄为29的人,只显示’name’和’salary’字段,期中’_id’必须人为指定为0才不会显示,其余字段必须统一使用返回或不返回
逻辑查询符号:
$gt 大于,$lt 小于,$gte 大于等于,$lte 小于等于,$eq 等于,$ne 不等于
用法:
collection.find({‘age’:{‘$gt’:29}}) #查询所有年龄大于29的记录
collection.find({‘age’:{‘$gte’:29,’$lte’:40}}) #查询所有29<=年龄<=40的记录
collection.find({‘age’:{‘$ne’:40}}) #查询所有年龄不等于40的记录
对查询结果进行排序sort():
语法:collection.find().sort(‘列名’,1或-1) 一般配合find()使用
用法:
collection.find({‘age’:{‘$gte:29,’$lte’:40}}).sort(‘age’,-1) #查询出29<=年龄<=40的记录,并对age进行降序排序
更新记录update_one()和update_many():
语法:
Collection.update_one(参数1,参数2)#只更新一条符合要求的信息(参数1,2都为字典,不能省略)
Collection.update_many(参数1,参数2)#更新所有符合要求的信息(参数1,2都为字典,不能省略)
用法:
Collection.update_one({‘age’:20},{‘$set’:{‘name’:’kingname’}}) #将第一个年龄为20的人的姓名改为’kingname’
Collection.update_many({‘age’:20,{‘$set’:{‘age’:30}}) #将年龄为20的所有人改年龄为30
collection.update_many({‘age’:{‘$gt’:40},{‘$set’:{‘name’:’notyoung’}}) #将年龄所有大于40的人名字改为’notyoung’
删除记录delete_one()和delete_many():
语法:
Collection.delete_one(参数)
Collection.delete_many(参数)
用法:
Collection.delete_one({‘name’:’kingname’}) #删除一条名字为’kingname’的记录
Collection,delete_many({‘name’:”kingname’}) #删除所有名字为’kingname’的记录
对结果进行去重distinct(‘列名’):
语法:
Collection.distinct(‘列名’)
用法:
Collection.distinct(‘age’) #对年龄进行去重
Python通过PyMongo库实现对MongoDB的使用
标签:distinct nec tin 字符串 通过 大于等于 样式 更新记录 变量
小编还为您整理了以下内容,可能对您也有帮助:
Python语言怎么实现mongodb的查询操作?
对于mongo的操作,先安装mongodb的python扩展,在你的命令行窗口上输入:pip install pymongo,下面是例子,按需要修改
from pymongo import MongoClientimport time
mongo_uri_auth = 'mongodb://user:password@localhost:27017/'#mongo有要验证的话请自行替换user和password
mongo_uri_no_auth = 'mongodb://localhost:27017/' #mongo没有账号密码验证的时候用这个
database_name = 'request_db' # 你要连接的数据库名,自行替换你需要的库名
table_name = 'request_tb' #你要查询的表名,请自行替换你需要的表名
client = MongoClient(mongo_uri_no_auth)#创建了与mongodb的连接
db = client[database_name]
table = db[table_name] #获取数据库中表的游标
#你要插入的数据
insert_data = {"name": "Mike", "grade": "two", "age": 12, "sex": "man"}
table..insert_one(insert_data ) #插入一条数据
#查询数据name为Mike的记录
record = table.find_one({"name": "Mike"})
print record
python脚本中如何用pymongo模块在mongodb中创建一个聚集?
123456789101112聚集 collection??? pymongo只有在插入数据到collection里去,如果collection不存在,才会建collection的 from pymongo import MongoClientclient = MongoClient('mongodb://localhost:27017/')db = client.test_databasecoll= db.test_collection 如果你用coll.insert() 插了数据进去 那么就会在mongodb里面建了个库test_database,并建了个collection名字叫test_collection
怎样使用python访问mongodb
安装驱动pymongo!
输入命令:pip install pymongo
直接使用驱动
ORM框架——flask-mongoengine
输入命令:pip install flask-mongoengine
使用介绍:
创建连接
切换数据库
获取collection
db和collection都是延时创建的,在添加Document时才真正创建
文档添加,_id自动创建
批量插入
获取所有collection(相当于SQL的show tables)
加条件的查询
高级查询
查看查询语句的性能
缺点:
不是全盘取代传统数据库(NoSQLFan:是否能取代需要看应用场景)
不支持复杂事务(NoSQLFan:MongoDB只支持对单个文档的原子操作)
文档中的整个树,不易搜索,4MB*?(NoSQLFan:1.8版本已经修改为16M)
特点(NoSQLFan:作者在这里列举的很多只是一些表层的特点):
文档型数据库,表结构可以内嵌
没有模式,避免空字段开销(Schema Free)
分布式支持
查询支持正则
动态扩展架构
32位的版本最多只能存储2.5GB的数据(NoSQLFan:最大文件尺寸为2G,生产环境推荐64位)
怎样使用python访问mongodb
安装驱动pymongo!
输入命令:pip install pymongo
直接使用驱动
ORM框架——flask-mongoengine
输入命令:pip install flask-mongoengine
使用介绍:
创建连接
切换数据库
获取collection
db和collection都是延时创建的,在添加Document时才真正创建
文档添加,_id自动创建
批量插入
获取所有collection(相当于SQL的show tables)
加条件的查询
高级查询
查看查询语句的性能
缺点:
不是全盘取代传统数据库(NoSQLFan:是否能取代需要看应用场景)
不支持复杂事务(NoSQLFan:MongoDB只支持对单个文档的原子操作)
文档中的整个树,不易搜索,4MB*?(NoSQLFan:1.8版本已经修改为16M)
特点(NoSQLFan:作者在这里列举的很多只是一些表层的特点):
文档型数据库,表结构可以内嵌
没有模式,避免空字段开销(Schema Free)
分布式支持
查询支持正则
动态扩展架构
32位的版本最多只能存储2.5GB的数据(NoSQLFan:最大文件尺寸为2G,生产环境推荐64位)
请教一个python 链接mongodb问题
在这周学习Python tornado的过程中,接触了新的数据库mongo.
在刚开始连接的过程中,就出现了如下的问题,特此记录一下。
AttributeError: 'mole' object has no attribute 'Connection'
python版本2.7.11
pymongo版本3.3.0
根据网上的教程,首先导入pymongo,连接第一步的步骤大都是如下的
import pymongo
conn = pymongo.Connection('localhost',27017)
然后就报错啦啦啦啦!
AttributeError: 'mole' object has no attribute 'Connection'
然后发现我看的pymongo教程大都是几年前的,pymongo的版本应该也比较低。
后面百度,google了一下,原来是新的pymongo中取消了Connection这个方法。
新的版本需要新建一个client,然后才是连接。
>>> from pymongo import MongoClient
>>> client=MongoClient()
>>> client
MongoClient('localhost', 27017)
mongo_client – Tools for connecting to MongoDB
python 怎样通过遍历以下文件后全部读到mongodb数据库中?
python 访问 mongodb 需要先安装 pymongo,如下:
1pip install pymongotxt 文件格式:
代码如下:
python 怎样通过遍历以下文件后全部读到mongodb数据库中?
python 访问 mongodb 需要先安装 pymongo,如下:
1pip install pymongotxt 文件格式:
代码如下:
为什么pymongo的两种连接mongoDB的方法效率相差这么多,求原理科普1
0.000314950942993
MongoClient
1.0.000757217407227
Connection
10.0.00154709815979
MongoClient
10.0.00501179695129
Connection
100000
6.14999890327
MongoClient
100000
27.3278138638
Connection
1000000
59.0989689827
MongoClient
1000000
273.486183882
结果分析
从上表的结果可以看出,基本上MongoClient的连接方式插入数据的时间是Connection连接方式插入数据的4倍左右,当然数据量小的时候可能建立连接还有一些非相关的操作可能占的比重比较大,越到后来就越稳定。
疑问
1、这就让我产生了疑问,pymongo这两种方式的实现原理有怎样的不同之处,造成他们的写效率相差如此之多?
2、项目中当然要采用连接效率比较高的方法,但是现在不知道实现的原理,心里就比较没底,不太确定的是Connection的方法虽然比较快,但是会不会需要手动管理连接资源;如果操作太多了的话会不会造成资源的占用
还请各位大神们推荐一些能够解决这些问题的地方,或者是给一下参考资料我自己去研究一下
为什么pymongo的两种连接mongoDB的方法效率相差这么多,求原理科普
标签:
关于Python连接Mongodb数据库的问题
用法错了,应该是这样子
>>> import pymongo
>>> client = pymongo.MongoClient("localhost", 27017)