首页 > 数据库 >学习如何使用 Python 连接 MongoDB: PyMongo 安装和基础操作教程

学习如何使用 Python 连接 MongoDB: PyMongo 安装和基础操作教程

时间:2024-01-13 09:45:20浏览次数:33  
标签:name Python MongoDB 数据库 address 集合 PyMongo id

Python 可以用于数据库应用程序。最流行的 NoSQL 数据库之一是 MongoDB

MongoDB

MongoDB 将数据存储在类似 JSON 的文档中,使数据库非常灵活和可扩展。

您可以在 MongoDB 官网 上下载免费的 MongoDB 数据库

PyMongo

Python 需要一个 MongoDB 驱动程序来访问 MongoDB 数据库。我将使用 MongoDB 驱动程序 PyMongo

建议您使用 PIP 来安装 PyMongoPIP 很可能已经安装在您的 Python 环境中。将命令行导航到 PIP 的位置,然后键入以下内容:

python -m pip install pymongo

现在您已经下载并安装了一个 MongoDB 驱动程序。

测试 PyMongo

为了测试安装是否成功,或者如果您已经安装了 pymongo,请创建一个包含以下内容的 Python 页面:

demo_mongodb_test.py

import pymongo

创建数据库

要在 MongoDB 中创建数据库,首先创建一个 MongoClient 对象,然后指定一个带有正确 IP 地址和要创建的数据库名称的连接 URL。如果数据库不存在,MongoDB 将创建该数据库并与之建立连接。

示例

创建名为 mydatabase 的数据库:

import pymongo

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

mydb = myclient["mydatabase"]

重要提示: 在 MongoDB 中,数据库在获得内容之前是不会被创建的!MongoDB 会等到您创建了至少一个文档(记录)的集合(表),然后才实际创建数据库(和集合)。

检查数据库是否存在

请记住:在 MongoDB 中,数据库在获得内容之前是不会被创建的

您可以通过列出系统中的所有数据库来检查数据库是否存在:

示例

返回系统数据库的列表:

print(myclient.list_database_names())

或者您可以通过名称检查特定数据库:

示例

检查 mydatabase 是否存在:

dblist = myclient.list_database_names()
if "mydatabase" in dblist:
  print("The database exists.")

创建集合

要在 MongoDB 中创建集合,请使用数据库对象并指定要创建的集合的名称。如果集合不存在,MongoDB 将创建该集合。

示例

创建名为“customers”的集合:

import pymongo

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

mycol = mydb["customers"]

重要提示: 在 MongoDB 中,集合在获得内容之前是不会被创建的!MongoDB 会等到您插入了一个文档后,才实际创建集合。

检查集合是否存在

请记住:在 MongoDB 中,集合在获得内容之前是不会被创建的。因此,如果这是您第一次创建集合

您可以通过列出所有集合来检查数据库中是否存在集合:

示例

返回数据库中所有集合的列表:

print(mydb.list_collection_names())

或者您可以按名称检查特定集合:

示例

检查“customers”集合是否存在:

collist = mydb.list_collection_names()
if "customers" in collist:
  print("The collection exists.")

插入集合

要将记录(在 MongoDB 中称为文档)插入集合,我们使用 insert_one() 方法。insert_one() 方法的第一个参数是一个包含文档中每个字段的名称和值的字典。

示例

在“customers”集合中插入一条记录:

import pymongo

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

mydict = { "name": "John", "address": "Highway 37" }

x = mycol.insert_one(mydict)

返回 _id 字段

insert_one() 方法返回一个 InsertOneResult 对象,该对象有一个属性 inserted_id,该属性保存插入文档的 id。

示例

在“customers”集合中插入另一条记录,并返回 _id 字段的值:

mydict = { "name": "Peter", "address": "Lowstreet 27" }

x = mycol.insert_one(mydict)

print(x.inserted_id)

如果您未指定 _id 字段,MongoDB 将为您添加一个并为每个文档分配唯一的 id。在上面的示例中,未指定 _id 字段,因此 MongoDB 为记录(文档)分配了唯一的 _id。

插入多个文档

要在 MongoDB 的集合中插入多个文档,我们使用 insert_many() 方法。insert_many() 方法的第一个参数是包含要插入数据的字典的列表。

示例

import pymongo

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

mylist = [
  { "name": "Amy", "address": "Apple st 652"},
  { "name": "Hannah", "address": "Mountain 21"},
  { "name": "Michael", "address": "Valley 345"},
  { "name": "Sandy", "address": "Ocean blvd 2"},
  { "name": "Betty", "address": "Green Grass 1"},
  { "name": "Richard", "address": "Sky st 331"},
  { "name": "Susan", "address": "One way 98"},
  { "name": "Vicky", "address": "Yellow Garden 2"},
  { "name": "Ben", "address": "Park Lane 38"},
  { "name": "William", "address": "Central st 954"},
  { "name": "Chuck", "address": "Main Road 989"},
  { "name": "Viola", "address": "Sideway 1633"}
]

x = mycol.insert_many(mylist)

#

 打印插入文档的 _id 值的列表:
print(x.inserted_ids)

insert_many() 方法返回一个 InsertManyResult 对象,该对象有一个属性 inserted_ids,该属性保存插入文档的 id。

插入多个文档,指定ID

如果您不希望 MongoDB 为您的文档分配唯一的 id,可以在插入文档时指定 _id 字段。请记住,值必须是唯一的。两个文档不能具有相同的 _id。

示例

import pymongo

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

mylist = [
  { "_id": 1, "name": "John", "address": "Highway 37"},
  { "_id": 2, "name": "Peter", "address": "Lowstreet 27"},
  { "_id": 3, "name": "Amy", "address": "Apple st 652"},
  { "_id": 4, "name": "Hannah", "address": "Mountain 21"},
  { "_id": 5, "name": "Michael", "address": "Valley 345"},
  { "_id": 6, "name": "Sandy", "address": "Ocean blvd 2"},
  { "_id": 7, "name": "Betty", "address": "Green Grass 1"},
  { "_id": 8, "name": "Richard", "address": "Sky st 331"},
  { "_id": 9, "name": "Susan", "address": "One way 98"},
  { "_id": 10, "name": "Vicky", "address": "Yellow Garden 2"},
  { "_id": 11, "name": "Ben", "address": "Park Lane 38"},
  { "_id": 12, "name": "William", "address": "Central st 954"},
  { "_id": 13, "name": "Chuck", "address": "Main Road 989"},
  { "_id": 14, "name": "Viola", "address": "Sideway 1633"}
]

x = mycol.insert_many(mylist)

# 打印插入文档的 _id 值的列表:
print(x.inserted_ids)

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

标签:name,Python,MongoDB,数据库,address,集合,PyMongo,id
From: https://www.cnblogs.com/xiaowange/p/17961967

相关文章

  • python 里面的eval exec 还有compile
    一、简介二、操作三、问题 一、简介evalexec方法是python里面内置的方法,用于将字符串代码或者code对象,进行执行的方法。参考至:这里二、操作1eval计算指定表达式的值。也就是说它要执行的python代码只能是单个表达式(注意eval不支持任何形式的赋值操作......
  • Python第一天学习笔记
    今日学习内容1.什么是编程2.计算机组成原理3.计算机操作系统4.编程语言是什么什么是编程什么是编程语言编程语言是什么:人与计算机交流的介质什么是编程编程:利用编程语言写出一个个文件,这堆文件会达到一个目的编程有什么用就像近代奴隶主奴役黑奴干活一样,我们的目的是奴......
  • Python面向对象之反射
    【一】反射【1】什么是反射反射是一种程序可以访问、检测和修改其本身状态或行为的能力。在Python中,反射主要指通过字符串的形式操作对象的属性。【2】Python中的反射通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)【二】反射方法......
  • Python面向对象之派生
    派生【一】概要"派生"(Derivation)是指在面向对象编程中,通过创建新的类,基于已有的类(通常称为父类或基类)来构建新的类,以获取和扩展父类的属性和方法。在这个过程中,新创建的类称为子类或派生类。通俗来讲,派生是指,子类继承父类,派生出自己的属性与方法,并且重用父类的属性与方法【......
  • Python六个标准的数据类型
    Python3中有六个标准的数据类型,分别是:数字、字符串、列表、元组、集合、字典。1、Number(数字)Python中的数字有四种类型:整数、布尔型、浮点数和复数。int(整数),例如1、2、3。bool(布尔型),包括True和False两个值,分别代表真和假。举个例子:张三是不是男生?答案要么是真,要么是假。你只......
  • [oeasy]python0004_游乐场_和python一起玩耍_python解释器_数学运算
    和python玩耍......
  • python中进度条组件tqdm使用
    有的时候我们需要记录相关的执行过程,在整个过程中如果使用到了进度条,就更直观看到运行的现状。比如一下代码:importtimeif__name__=="__main__":#dosomething,进度为30time.sleep(1)print("执行了30%")#doanotherthing,进度为20time.slee......
  • Python使用Matplotlib包绘制x方的积分函数图像
    Matplotlib是一个常用的Python绘图库,可以用于创建各种类型的图表和可视化。本文将介绍如何使用Matplotlib包在Python中绘制x方的积分函数图像。步骤:以下是使用Matplotlib包绘制x方的积分函数图像的步骤:1.导入所需的库。2.定义要绘制的函数。3.创建一个表示x轴范围的数组。4.计算函......
  • Python中有哪些常用的工具可以用于接口自动化
    接口自动化测试是测试的重要一部分,Python作为一种流行的编程语言,提供了许多用于接口自动化测试的工具。本文将介绍一些常用的Python工具,用于接口自动化测试。1.RequestsRequests是一个Python库,用于发送HTTP请求和处理响应。它提供了一种简单而优雅的方式来发送HTTP/1.1请求,并自动处......
  • Python模块安装的前提条件及步骤详解
    Python是一种功能强大的编程语言,拥有丰富的第三方模块库。在使用这些模块之前,我们需要满足一些前提条件才能进行安装。本文将介绍Python模块安装的前提条件以及详细的安装步骤。前提条件:在安装Python模块之前,需要满足以下前提条件:1.Python解释器:确保已经正确安装了Python解释器,并且......