Python MongoDB

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: Python MongoDB

Python MongoDB

MongoDB 是目前最流行的 NoSQL 数据库之一,使用的数据类型 BSON(类似 JSON)。

安装

pip3 install pymongo

导入模块

import pymongo

建立本地链接

cl = pymongo.MongoClient('localhost', 27017)

## 或者

cl = Mongocl('mongodb://localhost:27017/')

获取数据库

一个MongoDB实例可以支持多个独立的 数据库。在使用PyMongo时,您可以使用Mongocl实例上的属性样式访问来访问数据库:

## 查看当前都有那些库
cl.database_names()

## 获取数据库对象
db = cl.test_database

或者

db = cl['test_database']

获取集合

一个集合是一组存储在MongoDB中的文档,并且可以被认为是大致在关系数据库中的表。
在 PyMongo 中获取集合与获取数据库的工作方式相同:

## 查看当前库中都有那些集合
db.collection_names()

## 获取集合对象
collection = db.test_collection

## 或者

collection = db['test-collection']

合法的集合名:

  • 集合名不能是空字符串""。
  • 集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
  • 集合名不能以"system."开头,这是为系统集合保留的前缀。
  • 用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。

惰性机制

关于MongoDB中的集合(和数据库)的一个重要注意事项是它们是懒惰地创建的。
上述命令都没有在MongoDB服务器上实际执行过任何操作。集合和数据库在第一个文档被插入时创建。

创建集合

MongoDB 中的集合类似 SQL 的表。

MongoDB 使用数据库对象来创建集合,实例如下:

#!/usr/bin/python3

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["runoobdb"]

mycol = mydb["sites"]

注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

判断集合是否已存在

我们可以读取 MongoDB 数据库中的所有集合,并判断指定的集合是否存在:

#!/usr/bin/python3

import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')

mydb = myclient['runoobdb']

collist = mydb. list_collection_names()
# collist = mydb.collection_names()
if "sites" in collist:   # 判断 sites 集合是否存在
  print("集合已存在!")

注意:collection_names 在最新版本的 Python 中已废弃,Python3.7+ 之后的版本改为了 list_collection_names()。

增、删、改、查等操作

下表列出了 MongoDB 的更多操作,详情可点击具体链接:

序号 功能
1 添加数据
2 查询数据
3 修改数据
4 数据排序
5 删除数据

添加一条数据

返回插入数据的_id

ret = collection.insert({"name":"test10010","age":33})
print(ret)

添加多条数据

返回ObjectId对象构成的列表

item_list = [{"name":"test1000{}".format(i)} for i in range(10)]
rets = collection.insert(item_list)
print(rets)
for ret in rets:
    print(ret)

find_one()查找一条数据

接收一个字典形式的条件,返回字典形式的整条数据 如果条件为空,则返回第一条

ret = client.test.test.find_one({'name': 'test10001'})
print(ret) # 包含mongodb的ObjectId对象的字典
_ = ret.pop('_id') # 清除mongodb的ObjectId对象的k,v
print(ret)

find()查找全部数据

返回所有满足条件的结果,如果条件为空,则返回全部 结果是一个Cursor游标对象,是一个可迭代对象,可以类似读文件的指针,但是只能够进行一次读取

rets = collection.find({"name":"test10005"}),
for ret in rets:
    print(ret)
for ret in rets: #此时rets中没有内容
    print(ret)

delete_one()删除一条数据

collection.delete_one({"name":"test10010"})

delete_many()删除全部数据

collection.delete_many({"name":"test10010"})
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
NoSQL MongoDB Python
【Python】已完美解决(MongoDB安装报错)Service ‘MongoDB Server (MongoDB)’ (MongoDB) failed tostart
【Python】已完美解决(MongoDB安装报错)Service ‘MongoDB Server (MongoDB)’ (MongoDB) failed tostart
87 1
|
4月前
|
存储 NoSQL MongoDB
MongoDB数据库转换为表格文件的Python实现
MongoDB数据库转换为表格文件的Python实现
188 0
|
19天前
|
NoSQL 安全 MongoDB
用python安装mongodb
用python安装mongodb
18 0
|
2月前
|
NoSQL Shell MongoDB
【Python】已解决:(MongoDB安装报错)‘mongo’ 不是内部或外部命令,也不是可运行的程序
【Python】已解决:(MongoDB安装报错)‘mongo’ 不是内部或外部命令,也不是可运行的程序
49 0
|
3月前
|
NoSQL Shell MongoDB
python操作MongoDB部分
python操作MongoDB部分
24 0
|
4月前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
471 9
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
3月前
|
存储 NoSQL MongoDB
深入解析 MongoDB 与 Python:基本语法、实用示例与最佳实践
深入解析 MongoDB 与 Python:基本语法、实用示例与最佳实践
|
11月前
|
NoSQL API MongoDB
Python使用PyMongo4.x操作MongoDB总结
PyMongo是一个Python编程语言中用于连接和操作MongoDB数据库的库。它提供了丰富的功能和API,使开发者能够在Python中轻松地进行MongoDB的数据交互和管理。
120 2
|
存储 JSON NoSQL
Python 操作mongodb库
MongoDB 是一个基于分布式文件存储的数据库。
221 0
Python 操作mongodb库
|
存储 NoSQL MongoDB
用Python操作MongoDB,看这一篇就够了
用Python操作MongoDB,看这一篇就够了
407 0
用Python操作MongoDB,看这一篇就够了