Python + MongoDB 小型程序利器

文章目录

[隐藏]

  • MongoDB 概要
  • Python + MongoDB

|作为一个用着和领扣 LeetCode 同样技术栈 —— Python 的程序员,对于平时一些小的想法和 Demo 自然是通过 Python 来解决,但是在学习和使用的过程中,对于数据的存储一直难以统一,最初使用纯文本文件存储,发现对于格式化索引来说纯文本存储效率太低,之后又转了 MySQL 存储,但是发现过于复杂,对于一些热更新数据来说写起来十分不雅观,限制太多,无奈便换成了 JSON 格式存储,当然,那是在现在使用的 MongoDB 之前了。

MongoDB 概要

MongoDB 用起来其实比较随意,相关命令遍写的感觉和 Python 这类弱类型语言很相似,用起来比较 Geek。

MongoDB 是一个面向文档的数据库,目前由 10gen 开发并维护,它的功能丰富,齐全,完全可以替代 MySQL。 MonogDB 的一些亮点:

  • 使用 JSON 风格 语法,易于掌握和理解:MongoDB 使用 JSON 的变种 BSON 作为内部存储的格式和语法。针对 MongoDB 的操作都使用 JSON 风格语法,客户端提交或接收的数据都使用 JSON 形式来展现。相对于 SQL来说,更加直观,容易理解和掌握。
  • Schema-less,支持嵌入子文档:MongoDB 是一个 Schema-free 的文档数据库。一个数据库可以有多个Collection,每个 Collection 是Documents的集合。Collection 和 Document 和传统数据库的 Table 和 Row并不对等。无需事先定义 Collection,随时可以创建。
  • Collection中可以包含具有不同 schema 的文档记录。 这意味着,你上一条记录中的文档有3个属性,而下一条记录的文档可以有10个属 性,属性的类型既可以是基本的数据类型(如数字、字符串、日期等),也可以是数组或者散列,甚至还可以是一个子文档(embed document)。这样,可以实现逆规范化(denormalizing)的数据模型,提高查询的速度。

如果在本地测试或者仅仅是为了临时丢一些数据进去的话,安装并启动 mongod 后直接在命令行下 mongo 即可完成连接,默认没有连接密码,如果看到类似如下提示的话,说明 MongoDB 已经安装完成了:

Python + MongoDB

下面让 Python 连接上 MongoDB:

安装 PyMongo:

pip3 install pymongo  

在 Python 中引入:

import pymongo  

指定数据表并连接:

# 默认的 MongoDB 监听地址  myclient = pymongo.MongoClient("mongodb://localhost:27017/")    # 使用上一步建立的 myclient 连接,并且使用 leetcode 数据库  db = myclient["leetcode"]    # 使用 db 连接的 leetcode 数据库中的 articles 表  table = db['articles']  

增删改查:

# 定义我们要插入的数据,JSON 格式,在 Python 中就是 Dict 格式  post = {"author": "Nova Kwok",          "text": "LeetCode is in China!",          "tags": ["mongodb", "python", "pymongo"],          "date": datetime.datetime.utcnow()}  

插入一条记录:

# 插入一条记录并返回插入 ID  post_id = posts.insert_one(post).inserted_id  

查询记录,这里我们需要多 import 一个包,pprint:

import pprint  pprint.pprint(posts.find_one())  

返回结果:

{u'_id': ObjectId('...'),  u'author': u'Nova Kwok',  u'date': datetime.datetime(...),  u'tags': [u'mongodb', u'python', u'pymongo'],  u'text': u'LeetCode is now in China!'}  

原文出处:zhihu -> https://zhuanlan.zhihu.com/p/49973955

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。