zoukankan      html  css  js  c++  java
  • 简单的一个MySQL类的实现:

    '''
    定义MySQL类:
    1.对象有id、host、port三个属性
    2.定义工具create_id,在实例化时为每个对象随机生成id,保证id唯一
    3.提供两种实例化方式,方式一:用户传入host和port 方式二:从配置文件中读取host和port进行实例化
    4.为对象定制方法,save和get_obj_by_id,save能自动将对象序列化到文件中,文件路径为配置文件中DB_PATH,文件名为id号,保存之前验证对象是否已经存在,若存在则抛出异常;get_obj_by_id方法用来从文件中反序列化出对象
    '''
      代码:
    import time
    import hashlib
    import os
    import pickle
    import random
    import settings
    
    class MySQL:
        BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    
        def __init__(self,host,port):
            self.host = host
            self.port = port
            #注意返回的是int型的,需要转化为str类型
            self.id = str(self.create_id())
    
        def create_id(self):
            return random.randint(1,5555)
            #或者用下面的生成时间戳的MD5编码
            # m = hashlib.md5(str(time.time()).encode('utf-8'))
            # return m.hexdigest()
    
        def save(self):
            file_name = os.path.join(self.BASE_DIR,'DB_PATH',str(self.id))
            #os.walk方法——files为文件夹下的文件名列表
            for root,dirs,files in os.walk(os.path.join(self.BASE_DIR,'DB_PATH')):
                if self.id in files:
                    raise FileNotFoundError('文件已存在!')
    
            with open(file_name,'wb') as f:
                pickle.dump(self,f)
                print('文件已保存'.center(50, '*'))
    
        def get_obj_by_id(self,id):
            file_name = os.path.join(self.BASE_DIR, 'DB_PATH',str(id))
            with open(file_name,'rb') as f:
                #pickle的load方法
                data = pickle.load(f)
                return  data
    
    
    if __name__ == '__main__':
        mysql = MySQL(settings.HOST,settings.PORT)
        print('文件初始化的数据'.center(50, '*'))
        print(mysql.host)
        print(mysql.port)
        print(mysql.id)
        mysql.save()
        data = mysql.get_obj_by_id(mysql.id)
        print('文件中读出来的数据'.center(50,'*'))
        print(data.host)
        print(data.port)
        print(data.id)

      结果:

  • 相关阅读:
    jquery 实现 html5 placeholder 兼容password密码框
    php返回json的结果
    使用PHP读取远程文件
    Sharepoint 自定义字段
    Sharepoint 中新增 aspx页面,并在页面中新增web part
    【转】Sharepoint 2010 配置我的站点及BLOG
    JS 实现 Div 向上浮动
    UserProfile同步配置
    【转】Import User Profile Photos from Active Directory into SharePoint 2010
    Sharepoint 2010 SP1升级后 FIMSynchronizationService 服务无法开启
  • 原文地址:https://www.cnblogs.com/paulwhw/p/9090785.html
Copyright © 2011-2022 走看看