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],我们会很快的为您处理。