Python--ZODB

zodb是python自带的对象数据库,以kv的形式存放对象状态。可以存放简单类型与复杂类型。例子:

from persistent import Persistent
from ZODB import FileStorage, DB
import transaction
from elec_rate_server.data.measurepoint import MeasurePoint
from elec_rate_server.electools.meterpowertype import MeterPowerType

class DescHandler(object):
    def __init__(self, info_path):
        self.info_path = info_path
       
    def zodb_init(self):
       '''数据库初始化'''
        self.storage = FileStorage.FileStorage(self.info_path)
        self.db = DB(self.storage)
        self.connection = self.db.open()
        self.dbroot = self.connection.root()
   
    def zodb_finit(self):
        '''数据库关闭'''
        self.connection.close()
        self.db.close()
        self.storage.close()

    def save_desc_info(self, func_index, users, transgroups, relations):
         '''存放对象'''
        self.zodb_init()
       
        result_mps = list()
        for user in users:
            for mp in user.get_measure_pos_list():
                result_mps.append(mp)
       '''对象可以是list'''
        self.dbroot[func_index] = result_mps
        transaction.commit()
       
        self.zodb_finit()
   
    def get_desc_info(self):
        '''获取对象数据'''
        self.zodb_init()
       
        for key in self.dbroot.keys():
            proc_results = self.dbroot[key]
            if isinstance(proc_results, list):
                print(str(key)+' 打印中间结果:')
                for mp in proc_results:
                    if isinstance(mp, MeasurePoint):
                        print("group_no:", mp.group_no)
                        if isinstance(mp.get_write_power(), MeterPowerType):
                            print("  power:", mp.get_write_power().get_e())
       
        self.zodb_finit()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值