这是MongoDB中的一个特色操作,也是早期MongoDB的无奈之选。因为早期版本的MongoDB并不支持事务处理。而上面讲到的更新和删除,并不能保证并发情况下的数据安全。
MongoDB为了解决这个并发的数据问题,增加了三个原子级的处理,对应于PyMongo的三个方法:find_one_and_update、find_one_and_replace和find_one_and_delete。
这三个方法,看名字就知道做什么的。用法上,跟上面的更新和删除一致,区别在于:这三个方法执行的时候,会通过数据锁来保证数据修改在并发状态下的一致性。当然,这个处理是有一定代价的,它要比上面说的更新和删除慢一点,实测数据会慢5毫秒左右。
这三个方法应用挺广的。比方我们需要生成一个自增量ID,就可以用find_one_and_update来控制增量数据,因为他是原子级操作,所以并发也不会有重复的数据产生。
嗯,MongoDB从4.0开始,已经全面支持事务了。不过,这三个方法依然保留了下来。
12. 事务这是一个新特性,需要数据库4.0以上才支持。写法上,跟传统的事务没什么区别。
with client.start_session() as s:s.start_transaction()
filter = {"article_id": 1}
update = {"$set": {"body": "新的文章内容"}}
result = collection.update_one(filter, update)
result = collection.delete_one(filter)
s.commit_transaction()
以上部分,就是Python操作MongoDB的全部内容。
最后,送大家一个彩蛋。
三、彩蛋有时候,我们需要把写好的Python程序给到别人来使用,可是,我们又不能让别人也装个Python。怎么办?
神器来了。
PyInstaller,官网在。
它的作用,是把您写的Python程序,转成各种操作系统下的可执行文件。
PyInstaller安装很简单:
% pip install pyinstaller使用更简单:
% pyinstaller your_code.py经过一翻编译,会生成几个目录。其中,dist目录下,就是编译完成的可执行程序。当然,我们的Python程序会引用或依赖一些库,而可爱的PyInstaller,也很贴心的把这些库复制到了这个目录中。
找到目录中同名的可执行程序,例如这个例子中,将是your_code,运行之,搞定。
(全文完)
本文的配套代码,在https://github.com/humornif/Demo-Code/tree/master/0016
微信公众号:老王Plus