面向对象联系(定义mysql类)
Posted mjiu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象联系(定义mysql类)相关的知识,希望对你有一定的参考价值。
练习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 time import 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类)的主要内容,如果未能解决你的问题,请参考以下文章