关闭

[bigdata-020]用python3+pymogo 操作 mongodb数据库

278人阅读 评论(0) 收藏 举报

1. 安装pymongo

pip install pymongo


2. 写一个例子

#!/usr/bin/env python3
#! coding:utf-8 -*-

import pymongo
import time

client = pymongo.MongoClient('localhost', 27017)

db = client.get_database('user-behavior-data')
print(db.name)

backend = db.get_collection('backend')
backend.insert_one({"x":8})

backend.insert_many([{'y':15}, {'z':99}])

many_docs = []
for i in range(100000):
    doc = {}
    for t in 'abcdefghijklmnopqrstuvwxyz':
        doc[t] = i
    many_docs.append(doc)

t1 = time.time()
backend.insert_many(many_docs)
dt = time.time() - t1

print(dt)
client.close()


3. 文档

http://api.mongodb.com/python/current/index.html

https://docs.mongodb.com/getting-started/python/update/


4. 性能

10万条复杂记录插入时间是2.5s,每秒4万条。性能可观。如果记录是单key的,可以更快,每秒10万条。


5. 更多的操作示范

#!/usr/bin/env python3
# !-*- coding:utf-8 -*-

import pymongo
import datetime

mongo_client = pymongo.MongoClient('114.55.xxx.xx')
mongo_db = mongo_client['db1']
mongo_db.authenticate('user1', '384')

#房天下对应的collections
ftx_table = mongo_db['ftx_table']

#插入一条记录
post = {"数据类型": "test",
        "text": "My 1 blog post!",
        "tags": ["mongodb", "python", "pymongo"],
        "date": datetime.datetime.utcnow()}
id = ftx_table.insert_one(post).inserted_id
print('插入一条记录:', id)

# 插入多条记录
posts = [
{"数据类型": "test",
        "text": "My 2 blog post!",
        "tags": ["mongodb", "python", "pymongo"],
        "date": datetime.datetime.utcnow()},
{"数据类型": "test",
        "text": "3 blog post!",
        "tags": ["mongodb", "python", "pymongo"],
        "date": datetime.datetime.utcnow()}
]
ret = ftx_table.insert_many(posts)
print('插入多条记录:', ret.inserted_ids)

#查询一条记录
ret = ftx_table.find_one({'数据类型':'test'})
print('查询到一条记录:', ret)

#查询多条记录
ret = ftx_table.find({'数据类型':'test'})
print('查询多条记录:')
for i in ret:
    print(i)


#更新记录
ftx_table.update_one({'数据类型':'test'},
                     {
                             '$set':{'text':'update ok!'}
                     })


#删除记录
ret = ftx_table.delete_many({'数据类型':'test'})
print('删除记录数量:',ret.deleted_count)


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:188829次
    • 积分:3798
    • 等级:
    • 排名:第8428名
    • 原创:199篇
    • 转载:1篇
    • 译文:0篇
    • 评论:51条