面向對象聯系(定義mysql類)
阿新 • • 發佈:2018-05-03
pre most trac obj root enc dict 讀取 路徑
練習1:定義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方法用來從文件中反序列化出對象
# -*- coding: utf-8 -*- import timeimport hashlib import json import time import sys import os FILE = ‘user_info.json‘ def user(): return json.load(open(FILE)) user_info = user() class Mysql: def __init__(self,host,port): self.host = host self.port = port self.id = Mysql.create_id(self) def create_id(self): m= hashlib.md5(str(time.clock()).encode(‘utf-8‘)) self.id = m.hexdigest() return m.hexdigest() def save(self): for root, dirs, files in os.walk(os.path.dirname(__file__)): if self.id in files: raise FileNotFoundError(‘文件已存在‘) json.dump(self.__dict__,open(self.id,‘w‘,encoding=‘utf-8‘)) def get_obj_by_id(self,id): dic1 = json.load(open(id)) print(dic1) stu1 = Mysql(‘127.0.0.1‘,3306) print(stu1.id,stu1.host,stu1.port) stu1.get_obj_by_id(‘f0fbad80768437dfabc5050e0ebd4504‘) stu1.save() stu2 = Mysql(user_info[‘host‘],user_info[‘port‘])# print(stu2.id,stu2.host,stu2.port) stu2.save() #輸出 Traceback (most recent call last): 30565a8911a6bb487e3745c0ea3c8224 127.0.0.1 3306 File "G:/python練習/網絡編程/class_練習題.py", line 36, in <module> stu1.save() {‘host‘: ‘127.0.0.1‘, ‘port‘: 3306, ‘id‘: ‘f0fbad80768437dfabc5050e0ebd4504‘} File "G:/python練習/網絡編程/class_練習題.py", line 26, in save raise FileNotFoundError(‘文件已存在‘) FileNotFoundError: 文件已存在
面向對象聯系(定義mysql類)