zoukankan      html  css  js  c++  java
  • json ,pickle

    import settings
    import uuid
    import json
    import os
    import json as default_json
    from json.encoder import JSONEncoder
    
    class MyJsonEncoder(JSONEncoder):
        def default(self, o):
            if isinstance(o,MySQL):
                return o.__dict__
            return JSONEncoder.default(self,o)
    class MyJson(object):
        @staticmethod
        def dump(obj, fp):
            return default_json.dump(obj, fp,cls=MyJsonEncoder)      #自定义Json,使json 可以处理MySQL类的对象
    
    class MySQL:
        def __init__(self,host,port):
            self.id=self.create_id()
            self.host=host
            self.port=port
        def save(self):
            if not self.is_exists:
                raise PermissionError("yi cui zai ")
            file_path=r'%s%s%s'%(settings.DB_PATH,os.sep,self.id)
            # pickle.dump(self,open(file_path,'wb'))
            # from lib.MYJSON import MyJson          出错
    Python中可能会遇到 cannot import name ‘XXX’ 错误,
    其实这有可能出现再模块导入的顺序问题上,
    比如:在A文件头执行到语句 from B import XXX ,
    程序马上就会转到B文件中去,从头到尾顺序寻找B文件中的XXX函数,
    而A文件就暂停执行,直到把XXX函数复制到内存中,
    但B文件中的文件头可能也有导入,
    如果B文件头中又导入了A文件中的函数,
    由于XXX函数还没有被复制。
    所以于A文件因为暂停执行而无法导入,就会出现上面的错误了。

    MyJson.dump(self, open(file_path, 'w')) #self 就是一个MYSQL 的对相 @property def is_exists(self): tag=True files=os.listdir(settings.DB_PATH) for file in files: file_abspath=r'%s%s%s'%(settings.DB_PATH,os.sep,file) obj=json.load(open(file_abspath,'r')) # try: # obj=pickle.load(open(file_abspath,'rb')) # except EOFError: # return False if obj['host'] == self.host and obj['port'] == self.port: tag=False break return tag @staticmethod def get_obj_by_id(id): file_path=r'%s%s%s'%(settings.DB_PATH,os.sep,id) return json.load(open(file_path,'r')) # return pickle.load(open(file_path,'rb')) @staticmethod def create_id(): return str(uuid.uuid1()) @classmethod def from_conf(cls): return cls(settings.HOST,settings.PORT) # print(MySQL.from_conf()) # conn=MySQL.from_conf() # print(type(conn)) # conn.save() # res=conn.get_obj_by_id('ea6ebaf0-e68e-11e8-89fa-98541bbe06e4') # print(res.host,res.port) obj=MySQL('127.0.0.1','8090') # print(obj,type(obj)) obj.save()
  • 相关阅读:
    SP375 QTREE
    「2017 山东一轮集训 Day5」字符串 (后缀自动机, 拓扑排序)
    [SDOI2016]生成魔咒(后缀自动机)
    bzoj3252: 攻略(贪心)
    bzoj2961 共点圆 (CDQ分治, 凸包)
    [CTSC2012]熟悉的文章 (后缀自动机 单调队列)
    bzoj3622: 已经没有什么好害怕的了
    [SDOI2013]泉(容斥)
    [SHOI2012]信用卡凸包(计算几何)
    CF1139D Steps to One (莫比乌斯反演 期望dp)
  • 原文地址:https://www.cnblogs.com/wuxi9864/p/9951196.html
Copyright © 2011-2022 走看看