(推荐操作系统:windows7系统、Python 3.9.1、DELL G3电脑。)
1、定义Field类,它负责保存数据库表的字段名和字段的类型:
classField(object): def__init__(self,name,column_type): self.name=name self.column_type=column_type
2、在Field的基础上,进一步定义各种具体类型的Field,比如StringField,IntegerField等等:
classStringField(Field): def__init__(self,name,max_length): super(StringField,self).__init__(name,'varchar(%d)'%max_length) classIntegerField(Field): def__init__(self,name): super(IntegerField,self).__init__(name,'int')
3、下一步,就是编写最复杂的ModelMetaclass了:
classModelMetaclass(type): def__new__(cls,name,bases,attrs): ifname=='Model': returntype.__new__(cls,name,bases,attrs) print('Foundmodel:%s'%name) mappings=dict() fork,vinattrs.items(): ifisinstance(v,Field): mappings[k]=v forkinmappings.keys(): attrs.pop(k) attrs['__mappings__']=mappings attrs['__table__']=name returntype.__new__(cls,name,bases,attrs)
4、创建User类,并调用save方法,保存:
classUser(Model): id=IntegerField('id') name=StringField('username',max_length=48) email=StringField('email',max_length=128) password=StringField('password',max_length=24) #创建一个实例: u=User(id=12345,name='xiaoming',email='xiaoming@xiaomi.com',password='test') #保存到数据库: u.save()
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)