简单的一个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)

  结果:

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

时间: 2024-10-10 17:02:20

简单的一个MySQL类的实现:的相关文章

[Objective-C]简单实现一个OC类

一.语法规范 1.类:抽象的描述一件事物,比如将人.狗和猫抽象成动物类 在OC中用两个文件来描述一个类 1> .h:类的声明文件,用于声明成员变量和方法,类的声明代码在关键字@interface和@end之间: 2> .m:类的实现文件,用于实现.h文件中的方法,类的声明代码在关键字@implementation和@end之间: 注意:.h文件中的方法只参加声明,不参加实现:也就是说,只说明方法类型.方法返回值类型.方法名.方法参数类型,不编写方法内部代码 2.方法: 1> 方法的分类

Swift:简单封装一个工具类模板

创建模板类(封装一个类)新建一个名字叫做 Product 的类 Product.swift File 的内容 class Product { var name: String var description: String var price: Double var stock: Int init(name: String, description: String, price: Double, stock: Int) { self.name = name self.description =

PHP实现的一个简单的数据库操作类

PHP实现的一个简单的数据库操作类 实现的功能: - 在实例化的时候能设置连接字符集 - 在实例化的时候能连接数据库 - 在实例化的时候能选择默认数据库 - 销毁对象时关闭数据库 代码如下: <?php // 数据库操作类MySQLDB class MySQLDB { // 声明属性 private $server; private $username; private $password; public $default_db; public $link; // 声明构造函数 public f

一个简单的参数校验类

当我们写js的重载函数的时候,我们需要判断不同的输入情况. 而,一般我们是根据参数的个数来判断的,但是,常常情况并非如此: function abc(a,b,c) a:string b:number c:boolean 或者 a:string b:string c:number 这两种情况都是参数个数为3,但是参数类型却完全不同.如何的方便的构建一个重载函数呢? 用我的类即可: 类代码(很简短): var Param = { varify: function (oParam, sParamTyp

一个简单的通用验证类的实现

进园子三年多了,从来都只是看各位大神的文章,而没有写过,今天心血来潮来写一篇,本人水平略浅,写得不好勿见怪,大神勿喷 首先定义一个验证类型枚举,这里只列出最简单的两种验证类型 1 /// <summary> 2 /// 验证类型枚举 3 /// </summary> 4 public enum ValidateType 5 { 6 /// <summary> 7 /// 不为NULL验证 8 /// </summary> 9 NotNullValidate,

PHP实现的一个简单的数据库操作类(修改版)

PHP实现的一个简单的数据库操作类 实现的功能: - 在实例化的时候能设置连接字符集 - 在实例化的时候能连接数据库 - 在实例化的时候能选择默认数据库 - 销毁对象时关闭数据库 代码如下: <?php // 数据库操作类MySQLDB class MySQLDB { // 声明属性 private $server; private $port; private $username; private $password; public $default_db; private $charset;

043-PHP简单获得一个类对应的反射信息

<?php // 简单获得一个类对应的反射信息 class demo{ CONST CON_STR = '123456'; public $str_1; private $str_2; protected $str_3; public function test(){ } } # 系统内置的class,用于产生一个镜像 $class = new ReflectionClass("demo"); echo '<pre>'; # 系统内置的class,用于导出镜像能反射的

一个简单实现的string类

为了复习c++知识,简单的实现一个string类,类名为CMyString 环境说明:windows 7 64位 开发工具:Visual Studio 2015 CMyString类的头文件CMyString.h 1 #include <iostream> 2 3 #ifndef __C_MY_STRING__ 4 #define __C_MY_STRING__ 5 6 class CMyString 7 { 8 public: 9 //默认构造函数 10 CMyString(); 11 //

JMeter完成一个MySql压力测试

jmeter也可以用来做数据库的压力测试,并且兼容各种数据库类型,只需要更改对应的数据库驱动类和url.以下为整理到的数据库驱动类对应url.并且给出一个mysql数据库select的简单应用.如下: 一 不同数据库驱动类和对应的url: Datebase Driver class Database URL MySQL com.mysql.jdbc.Driver jdbc:mysql://host:port/{dbname} PostgreSQL org.postgresql.Driver jd