如何使用 Python 与 MongoDB
常见问题解答
如何将 MongoDB 连接到 Python?
有三种方法可以将 MongoDB 连接到 Python
- PyMongo - 连接 MongoDB 和 Python 的原生驱动程序。PyMongo 包含所有从 Python 代码执行数据库操作所需的库。由于 PyMongo 是低级驱动程序,它速度快,直观,并且提供更多控制。
- MongoEngine - MongoEngine 是文档对象映射器。我们可以定义一个映射应用程序对象和文档数据的模式。
- Djongo - 我们使用 Djongo 为 Python 网络应用程序(使用 Django 框架)提供支持。它将现有的 SQL 查询转换为 mongodb 查询文档。
哪个数据库最适合 Python?
Python 与不同的数据库都配合得很好。选择取决于您的项目需求。由于 MongoDB 具有灵活的模式并且与 Python 原生对象紧密映射,因此它是 Python 应用程序的一个很好的选择。这使得 Python 和 MongoDB 成为进行网络开发工作的一个很好的选择。
有关更多信息,请阅读 NoSQL 与 SQL 数据库。还有一些原生的 Python 数据库,但它们并不受欢迎并且功能非常有限。
MongoDB 适合 Python 吗?
MongoDB 以灵活且无模式的类似 JSON 的文档存储数据。Python 拥有丰富的库,可以直接处理 JSON 和 BSON 数据格式。Python 通过 PyMongo、MongoEngine 等驱动程序与 MongoDB 集成良好。
这使得 MongoDB 通过消除数据库模式的刚性而适合 Python。
Python 如何在 MongoDB 中存储数据?
Python 通过 PyMongo 和 MongoEngine 等库在 MongoDB 中存储数据。对于使用 Django 框架的 Web 应用程序,我们可以使用 Djongo。
- PyMongo:PyMongo 是 MongoDB 数据库的原生 Python 驱动程序。由于它是一个低级驱动程序,它更快,也是连接 Python 和 MongoDB 的首选方法。
- MongoEngine:使用 MongoEngine,我们可以创建一个模式(是的,对于无模式数据库)。MongoEngine 采用 ODM 方法将应用程序类和数据库文档进行映射。
- Djongo:Djongo 是一个 SQL 编译器。您可以将现有的 SQL 项目迁移到 MongoDB 而无需对代码进行太多更改。
如何使用 Python 与 MongoDB 一起使用?
我们可以使用 PyMongo 将 MongoDB 与 Python 连接起来。PyMongo 是 MongoDB 的原生 Python 驱动程序。它的语法类似于 MongoShell,因此我们可以轻松关联并使用正确的方法。例如,MongoShell 上的 insertMany() 对应于 PyMongo 中的 insert_many()。我们还可以使用 MongoEngine 和 Djongo 将 Python 和 MongoDB 连接起来。但是,首选方法是使用 PyMongo,因为它是一个低级驱动程序,速度更快,并且提供更多控制。有关 PyMongo 的更多信息,请参阅我们的文档 PyMongo。
如何使用 Python 从 MongoDB 获取数据?
在Python中连接MongoDB最高效且简单的方法是使用PyMongo。PyMongo是MongoDB的原生Python驱动程序。为了连接,我们使用命令pymongo.MongoClient(),并将连接字符串作为参数。然后,我们可以使用find()方法获取所需的文档。示例
~~~~
import pymongo
## 使用pymongo从Python连接到mongodb
client = pymongo.MongoClient(CONNECTION_STRING)
## 打开数据库
dbname = client['user_shopping_list']
## 获取集合
collection_name = dbname["item_details"]
## 从集合获取数据
item_details = collection_name.find()import pymongo
## 使用pymongo从Python连接到mongodb
client = pymongo.MongoClient(CONNECTION_STRING)
## 打开数据库
dbname = client['user_shopping_list']
## 获取集合
collection_name = dbname["item_details"]
## 从集合获取数据
item_details = collection_name.find()
~~~~
如何使用Python向MongoDB插入数据?
要插入数据,使用PyMongo连接MongoDB和Python。PyMongo是MongoDB的原生Python驱动程序。一旦连接,我们可以使用PyMongo的`insert_one()`和`insert_many()`等方法。示例
~~~~
## 获取MongoClient
client = pymongo.MongoClient(CONNECTION_STRING)
## 获取/创建数据库
dbname = client['user_shopping_list']
## 获取/创建集合
collection_name = dbname["item_details"]
## 创建文档
item_1 = {"item_name": "面包",...,"category" : "食品",
"quantity" : 2}
## 插入一行
collection_name.insert_one(item_1)## 获取MongoClient
client = pymongo.MongoClient(CONNECTION_STRING)
## 获取/创建数据库
dbname = client['user_shopping_list']
## 获取/创建集合
collection_name = dbname["item_details"]
## 创建文档
item_1 = {"item_name": "面包",...,"category" : "食品",
"quantity" : 2}
## 插入一行
collection_name.insert_one(item_1)
~~~~
如何使用Python在MongoDB中创建数据库?
我们使用PyMongo驱动程序使用Python代码创建MongoDB数据库。示例
~~~~
import pymongo
## 获取MongoClient
client = pymongo.MongoClient(CONNECTION_STRING)
## 获取/创建数据库
dbname = client['user_shopping_list']import pymongo
## 获取MongoClient
client = pymongo.MongoClient(CONNECTION_STRING)
## 获取/创建数据库
dbname = client['user_shopping_list']
~~~~
SQL数据库和无SQL数据库之间的区别
SQL数据库也称为关系数据库,无SQL(“非SQL”或“不仅SQL”)数据库也称为非关系数据库。关系数据库被称为关系型,因为它基于数学中的“关系数据模型”。
SQL数据库以固定行和列的表格形式存储数据。无SQL数据库有多种类型,例如
- 文档类型:JSON文档
- 键值:键值对
- 宽列:宽列数据存储有行和动态列的表格
基于SQL的数据库示例包括MySQL、Microsoft SQL Server、PostgreSQL和SQLite。无SQL数据库示例包括MongoDB、CouchDB、Redis、DynamoDB等。
有关更详细的区别,请参阅SQL vs NoSQL。