博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tornado的Mongodb异步操作—Motor
阅读量:7091 次
发布时间:2019-06-28

本文共 2756 字,大约阅读时间需要 9 分钟。

hot3.png

Motor是基于Tornado的Python操作mongodb的异步库。

使用@tornado.gen.coroutine

异步,非阻塞,Python协程,数据库增删改查

测试数据:

本地Mongodb数据库:localhost,端口号:27017, test_database,

数据表:test_collection

# 使用Motorimport tornado.genimport motor.motor_tornadofrom tornado.ioloop import IOLoopclient = motor.motor_tornado.MotorClient('mongodb://localhost:27017/')# client = motor.motor_tornado.MotorClient('localhost', 27017)db = client.test_database# db =client['test_database']collection = db.test_collection# collection = db['test_collection']# 使用motor实现mongodb的增删改查# 插入数据@tornado.gen.coroutinedef do_insert():    for i in range(10):        result = yield db.test_collection.insert({'i': i})        print(result)# 查询获取一条数据@tornado.gen.coroutinedef do_find_one():    document = yield db.test_collection.find_one({'i': {'$lt': 1}})    print(document)# 查询获取多条记录@tornado.gen.coroutinedef do_find():    cursor = db.test_collection.find({'i': {'$lt': 5}}).sort('i')    for document in (yield cursor.to_list(length=100)):        print(document)# 异步查询每次获取一条记录@tornado.gen.coroutinedef do_find2():    cursor = db.test_collection.find({'i': {'$lt': 5}})    while (yield cursor.fetch_next):        document = cursor.next_object()        print(document)# 查询使用 sort, limit, skip方法@tornado.gen.coroutinedef do_find3():    cursor = db.test_collection.find({'i': {'$lt': 5}})    cursor.sort('i', -1).limit(2).skip(2)    while (yield cursor.fetch_next):        document = cursor.next_object()        print(document)# 计算所有符合查询条件的个数@tornado.gen.coroutinedef do_count():    n = yield db.test_collection.find().count()  # 计算数据库中所有记录的总数    n1 = yield db.test_collection.find({'i': {'$gt': 5}}).count()  # 所有大于4的记录总数    n2 = yield db.test_collection.find({'i': {'$lt': 8, '$gt': 2}}).count()  # 所有大于2且小于8的记录总数    print('%s %s %s'.format(n, n1, n2))# 替换@tornado.gen.coroutinedef do_replace():    result = yield db.test_collection.replace_one({'i': 4}, {'name': 'xinxin'})    print(result)# 更新def do_update():    result = db.test_collection.update_one({'i': 5}, {'$set': {'key': 'value'}})  # 更新一条记录    result_many = db.test_collection.update_many({'i': {'$gt': 6}}, {'$set': {'sss': 'value'}})  # 更新多条信息    print(result)    print(result_many)# 删除def do_delete():    result = db.test_collection.delete_one({'i': 3})  # 删除一条记录    result_many = db.test_collection.delete_many({'i': {'$gt': 4}}) # 删除多条记录    print(result)    print(result_many)# IOLoop.current().run_sync(do_insert)# IOLoop.current().run_sync(do_find_one)# IOLoop.current().run_sync(do_find)# IOLoop.current().run_sync(do_find2)# IOLoop.current().run_sync(do_find3)# IOLoop.current().run_sync(do_count)# IOLoop.current().run_sync(do_replace)# IOLoop.current().run_sync(do_update)IOLoop.current().run_sync(do_delete)

 

 

转载于:https://my.oschina.net/xxWang/blog/815704

你可能感兴趣的文章
技术一览表
查看>>
Python 核心编程(第二版)——正则表达式
查看>>
简单聊一聊PRINCE2与PMP的区别
查看>>
java实现图的遍历(深度优先遍历和广度优先遍历)
查看>>
基于神经网络的实体识别和关系抽取联合学习
查看>>
hdu 大明A+B
查看>>
OO第二次博客作业
查看>>
旋转效果
查看>>
主机名命名规范
查看>>
docker 参数
查看>>
ESLint 规范项目代码
查看>>
栈内存和堆内存的区别
查看>>
Spring Theme简单应用
查看>>
----uni-app之安卓手机定位权限问题----
查看>>
SQL中Case的使用方法
查看>>
CentOS7 MySQL
查看>>
[洛谷P2584][ZJOI2006]GameZ游戏排名系统
查看>>
[USACO07NOV]电话线Telephone Wire
查看>>
随机数
查看>>
单例模式和工厂模式
查看>>