MongoDB安装使用并实现Python操作数据库

  • Post category:Python

以下是MongoDB安装使用并实现Python操作数据库的完整攻略。

安装MongoDB

  1. 下载MongoDB

访问MongoDB官网https://www.mongodb.com/try/download/community,选择适合自己系统的版本并下载。

  1. 解压MongoDB

将下载的MongoDB压缩包解压到指定目录下。

  1. 配置环境变量

将MongoDB解压后的文件夹路径配置到环境变量Path中。

  1. 启动MongoDB

在命令行或终端中输入以下命令启动MongoDB:

mongod

如果出现如下信息,则说明MongoDB已经成功启动:

...
 waiting for connections on port 27017

使用MongoDB

  1. 连接MongoDB服务

在Python程序中使用pymongo库连接MongoDB服务:

from pymongo import MongoClient

client = MongoClient()

如果MongoDB服务在其他机器上,需要指定MongoDB的IP和端口:

client = MongoClient('mongodb://localhost:27017/')
  1. 选择数据库

在MongoDB中,一个实例可以存储多个数据库。使用以下代码选择一个数据库并创建集合:

db = client['mydatabase']
collection = db['mycollection']
  1. 插入文档

使用以下代码向集合中插入一个文档:

post = {"author": "Mike",
        "text": "My first blog post!",
        "tags": ["mongodb", "python", "pymongo"]}
collection.insert_one(post)
  1. 查询文档

使用以下代码查询集合中的文档:

result = collection.find_one({"author": "Mike"})
print(result)

输出结果为:

{'_id': ObjectId('...'), 'author': 'Mike', 'text': 'My first blog post!', 'tags': ['mongodb', 'python', 'pymongo']}
  1. 更新文档

使用以下代码更新集合中的文档:

collection.update_one({"author": "Mike"}, {"$set": {"text": "My first blog post has been updated."}})
  1. 删除文档

使用以下代码删除集合中的文档:

collection.delete_one({"author": "Mike"})

示例说明

下面给出两个MongoDB和Python操作的示例说明。

示例一:保存和查询Python字典

以下代码保存一个Python字典到MongoDB:

document = {"name": "John", "age": 23}
collection.insert_one(document)

以下代码从MongoDB中查询并打印出上述保存的Python字典:

result = collection.find_one({"name": "John"})
print(result)

输出结果为:

{'_id': ObjectId('...'), 'name': 'John', 'age': 23}

示例二:保存和查询CSV文件

以下代码保存一个CSV文件到MongoDB:

import csv

with open('data.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        collection.insert_one(row)

以下代码从MongoDB中查询并打印出上述保存的CSV文件的前10行:

for doc in collection.find().limit(10):
    print(doc)

输出结果为:

{'_id': ObjectId('...'), 'name': 'John Doe', 'age': '27', 'position': 'Manager'}
{'_id': ObjectId('...'), 'name': 'Jane Smith', 'age': '35', 'position': 'Engineer'}
...