当前位置: 首页 > news >正文

only网站建设分析深圳做网站多少钱

only网站建设分析,深圳做网站多少钱,北京网站设计方案,校园官方网站如何制作1. ORM是什么 ORM 是 python编程语言后端web框架 Django的核心思想#xff0c;“Object Relational Mapping”#xff0c;即对象-关系映射#xff0c;简称ORM。 一个句话理解就是#xff1a;创建一个实例对象#xff0c;用创建它的类名当做数据表名#xff0c;用创建它…1. ORM是什么 ORM 是 python编程语言后端web框架 Django的核心思想“Object Relational Mapping”即对象-关系映射简称ORM。 一个句话理解就是创建一个实例对象用创建它的类名当做数据表名用创建它的类属性对应数据表的字段当对这个实例对象操作时能够对应MySQL语句 demo: class User(父类省略):uid (uid, int unsigned)name (username, varchar(30))email (email, varchar(30))password (password, varchar(30))...省略...u User(uid12345, nameMichael, emailtestorm.org, passwordmy-pwd) u.save() # 对应如下sql语句 # insert into User (username,email,password,uid) # values (Michael,testorm.org,my-pwd,12345)说明 所谓的ORM就是让开发者在操作数据库的时候能够像操作对象时通过xxxx.属性yyyy一样简单这是开发ORM的初衷只不过ORM的实现较为复杂Django中已经实现了 很复杂的操作本节知识 主要通过完成一个 insert相类似的ORM理解其中的道理就就可以了 2. 通过元类简单实现ORM中的insert功能 class ModelMetaclass(type):def __new__(cls, name, bases, attrs):mappings dict()# 判断是否需要保存for k, v in attrs.items():# 判断是否是指定的StringField或者IntegerField的实例对象if isinstance(v, tuple):print(Found mapping: %s %s % (k, v))mappings[k] v# 删除这些已经在字典中存储的属性for k in mappings.keys():attrs.pop(k)# 将之前的uid/name/email/password以及对应的对象引用、类名字attrs[__mappings__] mappings # 保存属性和列的映射关系attrs[__table__] name # 假设表名和类名一致return type.__new__(cls, name, bases, attrs)class User(metaclassModelMetaclass):uid (uid, int unsigned)name (username, varchar(30))email (email, varchar(30))password (password, varchar(30))# 当指定元类之后以上的类属性将不在类中而是在__mappings__属性指定的字典中存储# 以上User类中有 # __mappings__ {# uid: (uid, int unsigned)# name: (username, varchar(30))# email: (email, varchar(30))# password: (password, varchar(30))# }# __table__ Userdef __init__(self, **kwargs):for name, value in kwargs.items():setattr(self, name, value)def save(self):fields []args []for k, v in self.__mappings__.items():fields.append(v[0])args.append(getattr(self, k, None))sql insert into %s (%s) values (%s) % (self.__table__, ,.join(fields), ,.join([str(i) for i in args]))print(SQL: %s % sql)u User(uid12345, nameMichael, emailtestorm.org, passwordmy-pwd) # print(u.__dict__) u.save()执行的效果: Found mapping: password (password, varchar(30)) Found mapping: email (email, varchar(30)) Found mapping: uid (uid, int unsigned) Found mapping: name (username, varchar(30)) SQL: insert into User (uid,password,username,email) values (12345,my-pwd,Michael,testorm.org)3. 完善对数据类型的检测 class ModelMetaclass(type):def __new__(cls, name, bases, attrs):mappings dict()# 判断是否需要保存for k, v in attrs.items():# 判断是否是指定的StringField或者IntegerField的实例对象if isinstance(v, tuple):print(Found mapping: %s %s % (k, v))mappings[k] v# 删除这些已经在字典中存储的属性for k in mappings.keys():attrs.pop(k)# 将之前的uid/name/email/password以及对应的对象引用、类名字attrs[__mappings__] mappings # 保存属性和列的映射关系attrs[__table__] name # 假设表名和类名一致return type.__new__(cls, name, bases, attrs)class User(metaclassModelMetaclass):uid (uid, int unsigned)name (username, varchar(30))email (email, varchar(30))password (password, varchar(30))# 当指定元类之后以上的类属性将不在类中而是在__mappings__属性指定的字典中存储# 以上User类中有 # __mappings__ {# uid: (uid, int unsigned)# name: (username, varchar(30))# email: (email, varchar(30))# password: (password, varchar(30))# }# __table__ Userdef __init__(self, **kwargs):for name, value in kwargs.items():setattr(self, name, value)def save(self):fields []args []for k, v in self.__mappings__.items():fields.append(v[0])args.append(getattr(self, k, None))args_temp list()for temp in args:# 判断入如果是数字类型if isinstance(temp, int):args_temp.append(str(temp))elif isinstance(temp, str):args_temp.append(%s % temp)sql insert into %s (%s) values (%s) % (self.__table__, ,.join(fields), ,.join(args_temp))print(SQL: %s % sql)u User(uid12345, nameMichael, emailtestorm.org, passwordmy-pwd) # print(u.__dict__) u.save()运行效果如下: Found mapping: uid (uid, int unsigned) Found mapping: password (password, varchar(30)) Found mapping: name (username, varchar(30)) Found mapping: email (email, varchar(30)) SQL: insert into User (email,uid,password,username) values (testorm.org,12345,my-pwd,Michael)4. 抽取到基类中 class ModelMetaclass(type):def __new__(cls, name, bases, attrs):mappings dict()# 判断是否需要保存for k, v in attrs.items():# 判断是否是指定的StringField或者IntegerField的实例对象if isinstance(v, tuple):print(Found mapping: %s %s % (k, v))mappings[k] v# 删除这些已经在字典中存储的属性for k in mappings.keys():attrs.pop(k)# 将之前的uid/name/email/password以及对应的对象引用、类名字attrs[__mappings__] mappings # 保存属性和列的映射关系attrs[__table__] name # 假设表名和类名一致return type.__new__(cls, name, bases, attrs)class Model(object, metaclassModelMetaclass):def __init__(self, **kwargs):for name, value in kwargs.items():setattr(self, name, value)def save(self):fields []args []for k, v in self.__mappings__.items():fields.append(v[0])args.append(getattr(self, k, None))args_temp list()for temp in args:# 判断入如果是数字类型if isinstance(temp, int):args_temp.append(str(temp))elif isinstance(temp, str):args_temp.append(%s % temp)sql insert into %s (%s) values (%s) % (self.__table__, ,.join(fields), ,.join(args_temp))print(SQL: %s % sql)class User(Model):uid (uid, int unsigned)name (username, varchar(30))email (email, varchar(30))password (password, varchar(30))u User(uid12345, nameMichael, emailtestorm.org, passwordmy-pwd) # print(u.__dict__) u.save()
http://www.huolong8.cn/news/176755/

相关文章:

  • 德阳建设局网站微信做单页的网站
  • 页游平台网站wordpress 搜索翻页
  • 建设品牌公司网站网站制作设及的技术
  • 京东联盟推广网站有没有做ppt好看的免费网站
  • 技术支持东莞网站建设网名大全
  • 泉州高端网站建设网站制作新技术
  • 给个网站你们会感谢我的杭州会做网站
  • 个人网站建设推广服务星星wordpress模板
  • 新闻源代发网站怎么做济南网站优化推广
  • 深入网站开发和运维一二三类医疗器械目录
  • 网站建设维护合同范本南昌专业的企业网站开发公司
  • 设计优秀网站作品网站开发前端要学什么
  • 网站怎么发布wordpress5.2中文
  • 河南国基建设集团有限公司网站如何做网站投放广告
  • 网站建设报班站长要维护网站
  • 哪个网站可以做鸟瞰图hao123网站难做吗
  • 网站的作用网站设计的初衷
  • 做ppt好的模板下载网站有哪些新工商名录企业应用平台
  • 创建网站域名多少钱wordpress进不去了
  • 济南网站建设公司哪家专业淘宝客网站建好了没有数据库
  • 如何做网站源码备份做3d打印网站
  • 单位网站建设的请示网站换模板
  • dedecms网站地图制作招聘网站如何做SEO
  • 自己做网站 为什么出现403.ent做的网站有哪些
  • 做网站是数据库应该放在哪里网站切换城市代码
  • 如何做招聘网站的方案seo综合查询是什么
  • 通州广州网站建设网站建设中的端口
  • 主流网站开发平台新网站怎么做流畅
  • 淘客商品网站怎么做的自考本科需要什么条件
  • 计算机网络技术 网站建设方向网站二级页怎么做