zoukankan      html  css  js  c++  java
  • django mongodb 使用信号量 post_save举例

    问题:项目里操作记录表(mongodb)非常大,现在需要结合这个表进行一些业务统计,要求在插入记录时进行分析。

    解决方法:利用信号量,定义insert和create时调用。 参考:  https://blog.csdn.net/sun754276603/article/details/49180661

    eg:

    from mongoengine import signals
     
    class UploadRecord(Document):
        shop_id = IntField(verbose_name="店铺ID", required=True)
        campaign_id = IntField(verbose_name="计划ID")
        ... 字段定义......
     
        @classmethod
        def post_bulk_insert(cls, *args, **kwargs):
            """当批量插入到操作记录表后,执行处理,对应的方法eg:UploadRecord.objects.insert(rcd_list)"""
            print "post_bulk_insert: %s" % ("*" * 30)
            document_list = kwargs.get('documents', [])
            for doc in document_list:
                print doc.shop_id, doc.item_name, len(doc.detail_list)
     
        @classmethod
        def post_save(cls, sender, document, **kwargs):
            """当保存数据时到操作记录表时,执行处理,对应的方法eg: UploadRecord.objects.create(**rcd_dict)"""
            print "Post Save: %s" % ("1" * 30)
            print document.shop_id, document.item_name, len(document.detail_list)
     
     
    # 定义信号量,当mongodb的数据发生改变时执行方法
    signals.post_bulk_insert.connect(UploadRecord.post_bulk_insert, sender=UploadRecord)
    signals.post_save.connect(UploadRecord.post_save, sender=UploadRecord)
  • 相关阅读:
    【逆序对】N*M Puzzle / Simple Puzzle
    【逆序对】Ultra
    bzoj 1814 Fornula 1
    hdu 1693 插头dp入门
    bzoj 2154
    没有上司的舞会
    【HNOI】合唱队
    luogu 自适应Simpson2
    luogu 自适应Simpson1
    【bzoj 1502】月下柠檬树
  • 原文地址:https://www.cnblogs.com/yeteng/p/11971000.html
Copyright © 2011-2022 走看看