|作为一个用着和领扣 LeetCode 同样技术栈 —— Python 的程序员,对于平时一些小的想法和 Demo 自然是通过 Python 来解决,但是在学习和使用的过程中,对于数据的存储一直难以统一,最初使用纯文本文件存储,发现对于格式化索引来说纯文本存储效率太低,之后又转了 MySQL 存储,但是发现过于复杂,对于一些热更新数据来说写起来十分不雅观,限制太多,无奈便换成了 JSON 格式存储,当然,那是在现在使用的 MongoDB 之前了。
MongoDB 用起来其实比较随意,相关命令遍写的感觉和 Python 这类弱类型语言很相似,用起来比较 Geek。
MongoDB 是一个面向文档的数据库,目前由 10gen 开发并维护,它的功能丰富,齐全,完全可以替代 MySQL。 MonogDB 的一些亮点:
如果在本地测试或者仅仅是为了临时丢一些数据进去的话,安装并启动 mongod 后直接在命令行下 mongo 即可完成连接,默认没有连接密码,如果看到类似如下提示的话,说明 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!'}