python连接mongodb数据库
【摘要】 使用 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. 创建客户端
MongoClient
是pymongo
提供的核心类,用于连接 MongoDB 服务器。- 参数可以是:
- MongoDB URI:如
mongodb://localhost:27017/
(本地默认地址)。 - 用户名和密码:如
mongodb://username:password@host:port/
。 - 连接选项:可以通过
MongoClient
的其他参数配置连接池、超时等。
- MongoDB URI:如
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. 注意事项
-
MongoDB URI 格式:
- 本地连接:
mongodb://localhost:27017/
- 远程连接:
mongodb://username:password@host:port/
- 配置选项:
mongodb://host:port/?replicaSet=rs0&readPreference=secondaryPreferred
- 本地连接:
-
异常处理:
- 使用
try-except
捕获连接错误或操作错误:try: client = MongoClient("mongodb://localhost:27017/") except Exception as e: print(f"连接失败: {e}")
- 使用
-
性能优化:
- 使用连接池(
pymongo
默认支持)。 - 避免频繁打开和关闭连接。
- 使用连接池(
通过以上步骤,你可以使用 Python 轻松连接和操作 MongoDB 数据库。根据业务需求,可以进一步探索 MongoDB 的高级功能,如索引、分片、复制集等。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)