MongoDB 测试 Python 代码

本文提供了一组Python脚本来测试MongoDB的插入、查询及删除操作性能。通过循环进行大量数据的写入、随机查询及批量删除,评估MongoDB在高负载场景下的表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随机数查询测试 MongoDB 的 Python 代码

写库程序

#!/usr/bin/env python

from pymongo import Connection
import time
import datetime

connection = Connection('127.0.0.1', 27017)
db = connection['hawaii']

#时间记录器
def func_time(func):

    def _wrapper(*args,**kwargs):

        start = time.time()
        func(*args,**kwargs)
        print func.name,'run:',time.time()-start
    return _wrapper

@func_time
def insert(num):

    posts = db.userinfo

    for x in range(num):

        post = {"_id" : str(x),
                "author": str(x)+"Mike",
                "text": "My first blog post!",
                "tags": ["mongodb", "python", "pymongo"],
                "date": datetime.datetime.utcnow()}

        posts.insert(post)


if name == "main":

    #设定循环500万次
    num = 5000000
    insert(num)

查询程序

#!/usr/bin/env python

from pymongo import Connection
import time
import datetime
import random

connection = Connection('127.0.0.1', 27017)
db = connection['hawaii']

def func_time(func):

    def _wrapper(*args,**kwargs):
        start = time.time()
        func(*args,**kwargs)
        print func.name,'run:',time.time()-start
    return _wrapper

#@func_time
def randy():

    rand = random.randint(1,5000000)
    return rand

@func_time
def mread(num):

    find = db.userinfo
    for i in range(num):
        rand = randy()
        #随机数查询
        find.find( {"author": str(rand)+"Mike"} )


if name == "main":

    #设定循环100万次
    num = 1000000
    mread(num)

删除程序

#!/usr/bin/env python

from pymongo import Connection
import time
import datetime

connection = Connection('127.0.0.1', 27017)
db = connection['hawaii']

def func_time(func):

    def _wrapper(*args,**kwargs):

        start = time.time()
        func(*args,**kwargs)
        print func.name,'run:',time.time()-start

    return _wrapper

@func_time
def remove():

    posts = db.userinfo
    print 'count before remove:',posts.count();
    posts.remove({});
    print 'count after remove:',posts.count();

if name == "main":
    remove()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值