首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事
您的当前位置:首页正文

Python通过PyMongo库实现对MongoDB的使用

2023-11-13 来源:画鸵萌宠网

一、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 MongoClient

import 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 pymongo

txt 文件格式:

代码如下:


#coding=utf-8 from pymongo import MongoClient conn = MongoClient('127.0.0.1', 27017) # 连接 test 数据库,没有则自动创建db = conn.test   # 使用 students 集合,没有则自动创建students = db.students # 打开学生信息文件, 并将数据存入到数据库with open('students.txt', 'r') as f:         for line in f.readlines():                 # 分割学生信息        items = line.strip(' ').strip(' ').split(',')                 # 添加到数据库        students.insert({ 'stu_id': items[0], 'name': items[1], 'grade': int(items[2]) }) # 数据库查询学生信息并打印出来for s in students.find():    print(s)

python 怎样通过遍历以下文件后全部读到mongodb数据库中?

python 访问 mongodb 需要先安装 pymongo,如下:

1pip install pymongo

txt 文件格式:

代码如下:


#coding=utf-8 from pymongo import MongoClient conn = MongoClient('127.0.0.1', 27017) # 连接 test 数据库,没有则自动创建db = conn.test   # 使用 students 集合,没有则自动创建students = db.students # 打开学生信息文件, 并将数据存入到数据库with open('students.txt', 'r') as f:         for line in f.readlines():                 # 分割学生信息        items = line.strip(' ').strip(' ').split(',')                 # 添加到数据库        students.insert({ 'stu_id': items[0], 'name': items[1], 'grade': int(items[2]) }) # 数据库查询学生信息并打印出来for s in students.find():    print(s)

为什么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)

显示全文