关于元类的使用场景

    def __init__(self,field):
        self.field = field

class Createclass(type):
    def __new__(cls, class_name, supers_name, attrs):
        new_dict = dict()
        for key,values in attrs.items():
            if isinstance(values,field):
                new_dict[key] = values.field
        # print("new",new_dict)
        attrs['create_class']= new_dict
        attrs['cls_name'] = class_name
        return type.__new__(cls,class_name,supers_name,attrs)




class user(object,metaclass=Createclass):
    # uid = field("int unsigned")
    # name = field("varchar(30)")
    # email = field("varchar(30)")
    # password = field("varchar(30)")


    def create(self):
        conn = pymysql.connect(host ='localhost', port = 3306, database='stock_db', user ='root', password='mysql', charset='utf8')
        cs1 = conn.cursor()
        url = list()
        for key,values in self.create_class.items():
            url.append("%s %s"%(key,values))
            # print(key,values)
        print(self.cls_name)
        count = cs1.execute("""create table if not exists %s (%s)"""%(self.cls_name,",".join(url)))
        conn.commit()
        cs1.close()
        conn.close()

    def insert(self,**kwargs):
        conn = pymysql.connect(host ='localhost', port = 3306, database='stock_db', user ='root', password='mysql', charset='utf8')
        cs1 = conn.cursor()
        key_list = list()
        values_list = list()
        for key,values in kwargs.items():
            key_list.append(key)
            if isinstance(values,int):
                values_list.append(str(values))
            else:
                values_list.append(""" '%s'   """%values)


        count = cs1.execute("""insert into %s(%s) values (%s)"""%(self.cls_name,",".join(key_list),",".join(values_list)))
        conn.commit()
        cs1.close()
        conn.close()



class final(user):
    uid = field("int unsigned")
    name = field("varchar(30)")
    email = field("varchar(30)")
    password = field("varchar(30)")
def main():
   user = final()
   user.create()
   user.insert(name = "ni")


if __name__ == '__main__':
        main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值