python连接mongodb数据库

举报
福州司马懿 发表于 2025/04/06 22:27:52 2025/04/06
【摘要】 使用 Python 连接 MongoDB 数据库通常需要借助 MongoDB 官方提供的驱动程序 pymongo。以下是使用 pymongo 连接 MongoDB 的详细步骤: 1. 安装 pymongo首先,确保安装了 pymongo 库。如果尚未安装,可以通过 pip 安装:pip install pymongo 2. 连接 MongoDB以下是使用 pymongo 连接 MongoDB...

使用 Python 连接 MongoDB 数据库通常需要借助 MongoDB 官方提供的驱动程序 pymongo。以下是使用 pymongo 连接 MongoDB 的详细步骤:


1. 安装 pymongo

首先,确保安装了 pymongo 库。如果尚未安装,可以通过 pip 安装:

pip install pymongo

2. 连接 MongoDB

以下是使用 pymongo 连接 MongoDB 的基本步骤:

代码示例

from pymongo import MongoClient

# 1. 创建 MongoDB 客户端
client = MongoClient("mongodb://localhost:27017/")  # 默认连接到本地 MongoDB
# 如果需要连接远程 MongoDB,可以指定用户名、密码和地址,例如:
# client = MongoClient("mongodb://username:password@host:port/")

# 2. 选择数据库(如果不存在,会在插入数据时自动创建)
db = client["my_database"]

# 3. 选择集合(类似于关系型数据库中的表,如果不存在,会在插入数据时自动创建)
collection = db["my_collection"]

# 4. 插入一条文档(记录)
document = {"name": "Alice", "age": 25, "city": "New York"}
result = collection.insert_one(document)
print(f"插入的文档 ID: {result.inserted_id}")

# 5. 查询文档
found_document = collection.find_one({"name": "Alice"})
print("查询到的文档:", found_document)

# 6. 关闭连接(可选,`pymongo` 会自动管理连接池)
client.close()

3. 详细说明

1. 创建客户端

  • MongoClientpymongo 提供的核心类,用于连接 MongoDB 服务器。
  • 参数可以是:
    • MongoDB URI:如 mongodb://localhost:27017/(本地默认地址)。
    • 用户名和密码:如 mongodb://username:password@host:port/
    • 连接选项:可以通过 MongoClient 的其他参数配置连接池、超时等。

2. 选择数据库

  • 使用 client["database_name"] 选择数据库。
  • 如果数据库不存在,在插入数据时会自动创建。

3. 选择集合

  • 使用 db["collection_name"] 选择集合。
  • 如果集合不存在,在插入数据时会自动创建。

4. 插入数据

  • 使用 insert_one() 插入单条文档。
  • 使用 insert_many() 插入多条文档。

5. 查询数据

  • 使用 find_one() 查询单条文档。
  • 使用 find() 查询多条文档(返回一个游标对象,可以迭代访问)。

6. 关闭连接

  • 虽然 pymongo 会自动管理连接池,但在某些情况下(如脚本运行结束后),可以显式调用 client.close() 关闭连接。

4. 示例:插入和查询多条文档

from pymongo import MongoClient

# 创建客户端
client = MongoClient("mongodb://localhost:27017/")
db = client["my_database"]
collection = db["my_collection"]

# 插入多条文档
documents = [
    {"name": "Bob", "age": 30, "city": "Los Angeles"},
    {"name": "Charlie", "age": 35, "city": "Chicago"}
]
result = collection.insert_many(documents)
print(f"插入的文档 ID 列表: {result.inserted_ids}")

# 查询多条文档
for doc in collection.find({"age": {"$gt": 25}}):  # 查询年龄大于 25 的文档
    print(doc)

# 关闭连接
client.close()

5. 常见操作

更新文档

  • 使用 update_one() 更新单条文档。
  • 使用 update_many() 更新多条文档。
# 更新单条文档
collection.update_one({"name": "Alice"}, {"$set": {"age": 26}})

# 更新多条文档
collection.update_many({"city": "New York"}, {"$set": {"country": "USA"}})

删除文档

  • 使用 delete_one() 删除单条文档。
  • 使用 delete_many() 删除多条文档。
# 删除单条文档
collection.delete_one({"name": "Alice"})

# 删除多条文档
collection.delete_many({"age": {"$lt": 30}})

聚合查询

  • 使用 aggregate() 进行复杂的聚合操作(如分组、统计)。
from pymongo import ASCENDING

pipeline = [
    {"$group": {"_id": "$city", "total_age": {"$sum": "$age"}, "count": {"$sum": 1}}},
    {"$sort": {"total_age": ASCENDING}}
]

for result in collection.aggregate(pipeline):
    print(result)

6. 注意事项

  1. MongoDB URI 格式

    • 本地连接:mongodb://localhost:27017/
    • 远程连接:mongodb://username:password@host:port/
    • 配置选项:mongodb://host:port/?replicaSet=rs0&readPreference=secondaryPreferred
  2. 异常处理

    • 使用 try-except 捕获连接错误或操作错误:
      try:
          client = MongoClient("mongodb://localhost:27017/")
      except Exception as e:
          print(f"连接失败: {e}")
      
  3. 性能优化

    • 使用连接池(pymongo 默认支持)。
    • 避免频繁打开和关闭连接。

通过以上步骤,你可以使用 Python 轻松连接和操作 MongoDB 数据库。根据业务需求,可以进一步探索 MongoDB 的高级功能,如索引、分片、复制集等。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。