码迷,mamicode.com
首页 > 数据库 > 详细

简单的一个MySQL类的实现:

时间:2018-05-25 22:52:37      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:属性   分享图片   mys   setting   erro   存在   turn   random   open   

‘‘‘
定义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)

  结果:

技术分享图片

简单的一个MySQL类的实现:

标签:属性   分享图片   mys   setting   erro   存在   turn   random   open   

原文地址:https://www.cnblogs.com/paulwhw/p/9090785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!