一文说通MongoDB via Python操作 (3)

这是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

 

 

 

一文说通MongoDB via Python操作

 

微信公众号:老王Plus

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdxzy.html