封装功能:

查 : select

**kwargs.keys() --返回-> obj -转为-->list
[{},{}] ---> [obj,obj]
class Models(dict,metaclass=OSError):
def __getattr__(self, item):
#调用没有属性时触发
return self.get(item)
def __setattr__(self, key, value):
self[key] = value @classmethod
def orm_select(cls,**kwargs):
mysql = MySQLClient() if not kwargs:
sql = 'select * from %s' %cls.table_name res = mysql.my_select(sql) else:
key = list(kwargs.keys())[0]
value = kwargs.get(key) sql = 'select * from %s where %s=? '%(
cls.table_name,key
)
sql = sql.replace('?','%s')
res = mysql.my_select(sql,value) return [cls(**d) for d in res]

增:

    def orm_insert(self):
mysql = SQLClient() keys = []
values = []
args = [] for k , v in self.mappings.items():
if not v.primary_key: keys.append(v.name) values.append(
getattr(self,v.name,v.default)
) args.append('?')
sql = 'insert into %s(%s) values(%s)' %(
self.table_name,
','.join(keys),
','.join(args)
) sql = sql.replace('?','%s')
mysql.my_execute(sql,values)

改:

  #更新
class Models(dict,metaclass=OSError):
def orm_update(self):
mysql = SQLClient() keys = []
values = []
primary_key = None for k,v in self.mappings.items():
if v.primary_key:
primary_key = v.name + '= %s' % getattr(self,v.name) else:
keys.append(v.name + '=?')
values.append(
getattr(self,v.name)
) sql = 'update %s set %s where %s' %(
self.table_name,
','.join(keys),
primary_key
)
sql = sql.replace('?','%s')
mysql.my_execute(sql,values)

连接数据库:

连接数据库
import pymysql class MySQLClient:
def __init__(self): self.client = pymysql.connect(
host ='localhost',
port = 3306,
user= 'root',
password = '123',
database = 'orm_demo',
charset = 'utf-8',
auto_increment = True )
self.cursor = self.client.cursor(
pymysql.cursors.DictCursor
) def my_select(self,sql,value=None):
self.cursor.execute(sql,value) res = self.cursor.fetchall() return res def my_execute(self, sql, values):
try:
self.cursor.execute(sql, values) except Exception as e:
print(e) def close(self):
self.cursor.close()
self.client.close()

操作系统 : C

手机应用: iphone swift / objective-c

​ android java

​ 3D : C / C ++

get / post :

  1. 仅请求资源

    1. 附带用户数据

orm功能封装的更多相关文章

  1. orm映射 封装baseDao

    是用orm映射封装自己封装dao层 思路:通过映射获得实体类的属性拼接sql语句 import java.lang.reflect.Field; import java.lang.reflect.In ...

  2. java基础强化——深入理解java注解(附简单ORM功能实现)

    目录 1.什么是注解 2. 注解的结构以及如何在运行时读取注解 2.1 注解的组成 2.2 注解的类层级结构 2.3 如何在运行时获得注解信息 3.几种元注解介绍 3.1 @Retention 3.2 ...

  3. js实现第一次打开网页弹出指定窗口(常用功能封装很好用)

    js实现第一次打开网页弹出指定窗口(常用功能封装很好用) 一.总结 1.常用功能封装:之前封装的cookie的操作函数非常好用,我自己也可以这么搞 二.js实现第一次打开网页弹出指定窗口 练习1:第一 ...

  4. STM32嵌入式开发学习笔记(二):将功能封装为库文件

    将所有的函数都堆在main.c文件里不是好的选择,庞大的代码文件会是你维护的障碍,明智的做法是,一种功能封装到一个库文件里. 库文件就是你代码开始部分写的#include<xxxx.h>里 ...

  5. .NETCore 新型 ORM 功能介绍

    简介 FreeSql 是一个功能强大的 .NETStandard 库,用于对象关系映射程序(O/RM),支持 .NETCore 2.1+ 或 .NETFramework 4.6.1+. 定义 IFre ...

  6. JQuery实现列表中复选框全选反选功能封装

    我们在做列表的时候经常会遇到全选,反选进行批量处理问题,例如: 我当时就是简单的实现了,然后想封装到公共的js中,封装的太烂,不好意思贴出来了(就是把实现代码之间放到公共js中,然后每个页面都用固定的 ...

  7. MySoft.Data 2.7.3版本的GitHub托管(ORM升级封装)

    MySoft.Data 2.7.3 dotnet ORM 版权 这里版权属于老毛:http://www.cnblogs.com/maoyong 说明 MySoft体系中的ORM组件,这里的版本为2.7 ...

  8. thinkphp如何写find_in_set这样的orm查询封装

    今天写thinkphp的orm封装的时候 需要写一个 select * from table where user_id=xxx and find_in_set(100,group_id)这样的SQL ...

  9. Android Toast的多功能封装——Android开发之路1

    Android封装实现各种功能的Toast GitHub地址:https://github.com/SibreiaDante/ToastUtils 效果图: 方法封装如下: showSingleton ...

随机推荐

  1. Windows下使用Nexus搭建Maven私服

    A    http://www.pianshen.com/article/249363068/ nexus3安装与配置 B https://www.cnblogs.com/hujunzheng/p/9 ...

  2. 给基于对话框的MFC程序添加状态栏并实时显示时间

    转载自丝雪儿 1.首先在string table 里添加两个字串,ID分别为IDS_INDICATOR_MESSAGE and IDS_INDICATOR_TIME 2.在你的 dlg.h 类里面加个 ...

  3. Vue.js前端MVVM框架实战篇

    相信大家对vue.js这个前端框架有了一定的了解.想必也想把Vue急切的运用在项目中,看看它的魅力到底有多大?别急,今天我会满足大家的想法. 我们一起来看看“Webpack+Vue”的开发模式相比以往 ...

  4. 2. vue基础-vue-cli(vue脚手架)

    1. 作用 ​ 快速创建一个基于webpack模板的项目 2. 安装工具 安装webpack:使用npm全局安装webpack,打开命令行工具,输入 npm install webpack -g,安装 ...

  5. java 之 集合概述

    一.集合概述 不管是哪一种数据结构,其实本质上都是容器来着,就是用来装对象的.因此,我们就要搞清楚两点:(1)如何存储(2)存储特点 1.集合 集合是 Java 中提供的一种容器,可以用来存储多个数据 ...

  6. mysql 查询当天数据

    查询当天数据 select * from tab where FROM_UNIXTIME(fabutime, '%Y%m%d') = 20121217;   mysql TO_DAYS(date) 函 ...

  7. PHP实现单人多人聊天源码免费分享 | 电脑报修系统

    源码清单 1. 简易版登陆式聊天源码. 2. 电脑报修轻系统源码. 3. 关注下面公众号回复“聊天”,免费获取. 聊天系统 虽然微信,QQ是即时通讯的元老.但是他们限制很多,所以很多人都想做一个自己的 ...

  8. Apache Hive

    1.Hive简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 本质是将SQL转换为MapReduce程序. 主要用途:操作接口采用 ...

  9. centos 修改默认启动内核,及删除无用内核

    #使用cat /boot/grub2/grub.cfg |grep menuentry 查看系统可用内核 [root@bigapp-slave27 ~]# cat /boot/grub2/grub.c ...

  10. C#常用的图片处理方法-图片剪切、图片压缩、多图合并代码

    /// <summary> /// 图片转成圆角方法二 /// </summary> private Bitmap WayTwo(Bitmap bitmap) { //usin ...