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)

      结果:

  • 相关阅读:
    Eloquent ORM模型中添加自定义值
    wget
    带坑的几道PHP面试题
    php字符型转整型
    SELECT 1
    GD库
    Windows下.svn文件夹的最简易删除方法(附linux)
    svn 撤销修改
    mysql应用基本操作语句(转)
    i春秋broken
  • 原文地址:https://www.cnblogs.com/paulwhw/p/9090785.html
Copyright © 2011-2022 走看看