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()
关于元类的使用场景
最新推荐文章于 2024-05-10 21:33:34 发布