为什么在你可以继承Python Dict的时候使用MongoAlchemy?

时间:2015-09-09 03:27:40

标签: python mongodb dictionary pymongo mongoalchemy

一位朋友最近向我展示了你可以创建一个在Python中作为dict子类的实例,然后使用该实例进行保存,更新等。看起来你有更多的控制权,而且它看起来也更容易。 / p>

Sub TryMe()

    '1. some visible values in col A will be will be hidden in col B by hidden rows

    Sheet1.Range("A1:A10").SpecialCells(xlCellTypeVisible).Copy _
        Destination:=Range("A1").Offset(ColumnOffset:=1)

    '2. all visible values in col A will be will be visible bellow

    Sheet1.Range("A1:A10").SpecialCells(xlCellTypeVisible).Copy _
        Destination:=Range("A11").Offset(ColumnOffset:=1)

End Sub

1 个答案:

答案 0 :(得分:1)

作者在这里。您想要使用它(或许多类似库中的一个)的一般原因是为了安全。为MongoAlchemy文档分配值时,它会检查检查以确保满足您指定的所有约束(例如,类型,字符串长度,数字边界)。

它还有一个查询DSL,比使用类似json的内置语法更令人愉快。以下是文档中的示例:

>>> query = session.query(BloodDonor)
>>> for donor in query.filter(BloodDonor.first_name == 'Jeff', BloodDonor.age < 30):
>>>    print donor
Jeff Jenkins (male; Age: 28; Type: O+)

MongoAlchemy Session对象还允许您模拟交易:

with session:
    do_stuff()
    session.insert(doc1)
    do_more_stuff()
    session.insert(doc2)
    do_even_more_stuff()
    session.insert(doc3)
    # note that at this point nothing has been inserted
# now things are inserted

这并不意味着这些插入是一个原子操作 - 甚至所有写入都会成功 - 但它确实意味着如果你的应用程序在&#34; do_stuff&#34;你没有完成一半插入的功能。因此,它可以防止特定且相当常见的错误类型