MongoDB Python驱动
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,使用pip install pymongo安装1.连接MongoDB实例In [60]: from pymongo import MongoClientIn [61]: client=MongoCli
千家信息网最后更新 2024年11月25日MongoDB Python驱动
使用pip install pymongo安装
1.连接MongoDB实例
In [60]: from pymongo import MongoClientIn [61]: client=MongoClient('mongodb://10.10.41.25:2911')In [62]: client=MongoClient('10.10.41.25',2911)
两种写法都行
2.获取数据库信息
In [63]: db=client.gameIn [64]: db=client['game']
两种写法都行
3.获取集合信息
In [85]: collection=db.playerIn [86]: collection=db['player']
两种写法都行
4.插入一个文档记录
MongoDB以JSON格式存储和显示数据。在pymongo中以字典的方式显示数据。
In [95]: import datetimeIn [96]: post={"author":"Mike","text":"My first blog post!","tags":["mongodb","python","pymongo"],"date":datetime.datetime.utcnow()}
In [132]: posts=db.postsIn [133]: post_id=posts.insert(post)In [134]: post_idOut[134]: ObjectId('550ad8677a50900165feae9d')
当插入一个文档时,一个特殊的key,"_id"将自动添加到这个文档中。
In [136]: db.collection_names()Out[136]: [u'system.indexes',u'posts']
5.使用find_one()获取单个文档
In [141]: posts.find_one()Out[141]: {u'_id': ObjectId('550ad8677a50900165feae9d'), u'author': u'Mike', u'date': datetime.datetime(2015, 3, 19, 14, 7, 14, 572000), u'tags': [u'mongodb', u'python', u'pymongo'], u'text': u'My first blog post!'}In [142]: posts.find_one({"author":"Mike"})Out[142]: {u'_id': ObjectId('550ad8677a50900165feae9d'), u'author': u'Mike', u'date': datetime.datetime(2015, 3, 19, 14, 7, 14, 572000), u'tags': [u'mongodb', u'python', u'pymongo'], u'text': u'My first blog post!'}In [143]: posts.find_one({"author":"Eliot"})In [144]:
MongoDB以BSON格式存储字符,而BSON字符串是以UTF-8编码,所以PyMongo必须要确保它存储的数据是有效的UTF-8编码的数据。常规字符串直接存储,但是经过编码的字符串首先以UTF-8编码存储。
6.使用ObjectID查找文档
In [151]: post_idOut[151]: ObjectId('550ad8677a50900165feae9d')In [152]: posts.find_one({"_id":post_id})Out[152]: {u'_id': ObjectId('550ad8677a50900165feae9d'), u'author': u'Mike', u'date': datetime.datetime(2015, 3, 19, 14, 7, 14, 572000), u'tags': [u'mongodb', u'python', u'pymongo'], u'text': u'My first blog post!'}
ObjectID和它表示的字符串不一样
In [154]: post_id_as_str=str(post_id)In [155]: posts.find_one({"_id":post_id_as_str})
没有任何结果显示
在一些WEB应用中,需要更加URL获取post_id进而根据post_id查找匹配的文档。在使用find_one()查找之前有必要将post_id从字符串转换成为ObjectID
7.批量插入文档数据
>>> new_posts = [{"author": "Mike",... "text": "Another post!", "tags": ["bulk", "insert"], "date": datetime.datetime(2009, 11, 12, 11, 14)}, {"author": "Eliot", "title": "MongoDB is fun", "text": "and pretty easy too!", "date": datetime.datetime(2009, 11, 10, 10, 45)}] >>> posts.insert(new_posts)[ObjectId('...'), ObjectId('...')]
8.查询多个文档数据
In [165]: for post in posts.find(): post .....: .....: Out[166]: {u'_id': ObjectId('550ad8677a50900165feae9d'), u'author': u'Mike', u'date': datetime.datetime(2015, 3, 19, 14, 7, 14, 572000), u'tags': [u'mongodb', u'python', u'pymongo'], u'text': u'My first blog post!'}Out[166]: {u'_id': ObjectId('550b87d47a50907021e3473b'), u'author': u'Mike', u'date': datetime.datetime(2009, 11, 12, 11, 14), u'text': u'Another post!'}Out[166]: {u'_id': ObjectId('550b87d47a50907021e3473c'), u'author': u'Eliot', u'title': u'MongoDB is fun'}
In [169]: for post in posts.find({"author" : "Mike"}): .....: post .....: .....: Out[169]: {u'_id': ObjectId('550ad8677a50900165feae9d'), u'author': u'Mike', u'date': datetime.datetime(2015, 3, 19, 14, 7, 14, 572000), u'tags': [u'mongodb', u'python', u'pymongo'], u'text': u'My first blog post!'}Out[169]: {u'_id': ObjectId('550b87d47a50907021e3473b'), u'author': u'Mike', u'date': datetime.datetime(2009, 11, 12, 11, 14), u'text': u'Another post!'}
9.总计
In [170]: posts.count()Out[170]: 3In [171]: posts.find({"author":"Mike"}).count()Out[171]: 2
10.范围查询
In [183]: d=datetime.datetime(2009,11,12,12)In [184]: for post in posts.find({"date":{"$lt":d}}).sort("author"): .....: print post .....: .....: {u'date': datetime.datetime(2009, 11, 12, 11, 14), u'text': u'Another post!', u'_id': ObjectId('550b87d47a50907021e3473b'), u'author': u'Mike'}
11.索引
使用索引可以加快查询速度,缩小查询范围。
In [201]: posts.find({"date" : {"$lt":d}}).sort("author").explain()["cursor"]Out[201]: u'BasicCursor'In [202]: posts.find({"date" : {"$lt":d}}).sort("author").explain()["nscanned"]Out[202]: 3
创建组合索引
In [241]: from pymongo import ASCENDING,DESCENDINGIn [242]: posts.create_index([("date",DESCENDING),("author",ASCENDING)])Out[242]: u'date_-1_author_1'In [243]: posts.find({"date" : {"$lt":d}}).sort("author").explain()["nscanned"]Out[243]: 1
12.
参考文档
http://api.mongodb.org/python/current/tutorial.html?_ga=1.58141740.722641156.1410499072
文档
数据
字符
字符串
存储
编码
查询
写法
索引
UTF-8
信息
格式
范围
有效
特殊
必要
单个
多个
字典
实例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
第二届大学生网络安全精英赛题库
青岛科技大学网络安全学院
数据库思索
数据库year()方法
道路车辆软件开发指南
服务器moc是什么意思
数据库应不应该使用存储函数
萧何偷秦朝数据库
启东租房网络安全
5G无线通信的网络安全问题
我国网络技术发展趋势
银行数据库教程应用业务场景
数据库储存数据的基本组件
同步sqlite数据库
软件开发商投钱给 试玩平台
sql数据库自动编号字段
燃烧得远征哪个服务器平衡
从科技方面讲互联网
信州租房软件开发
为什么都买国外服务器
汕头销售软件开发外包
网络安全请注意事项
医院网络安全工作情况总结汇报
东华云都高级软件开发工程师
华为服务器自带系统的密码是什么
南通理工学院网络安全专业
控制数据库系统工作的人员是
有没有最好的数据库
东莞app软件开发费用是多少
sap财务数据库连接模式