orm功能封装
封装功能:
查 : 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 :
仅请求资源
- 附带用户数据
orm功能封装的更多相关文章
- orm映射 封装baseDao
是用orm映射封装自己封装dao层 思路:通过映射获得实体类的属性拼接sql语句 import java.lang.reflect.Field; import java.lang.reflect.In ...
- java基础强化——深入理解java注解(附简单ORM功能实现)
目录 1.什么是注解 2. 注解的结构以及如何在运行时读取注解 2.1 注解的组成 2.2 注解的类层级结构 2.3 如何在运行时获得注解信息 3.几种元注解介绍 3.1 @Retention 3.2 ...
- js实现第一次打开网页弹出指定窗口(常用功能封装很好用)
js实现第一次打开网页弹出指定窗口(常用功能封装很好用) 一.总结 1.常用功能封装:之前封装的cookie的操作函数非常好用,我自己也可以这么搞 二.js实现第一次打开网页弹出指定窗口 练习1:第一 ...
- STM32嵌入式开发学习笔记(二):将功能封装为库文件
将所有的函数都堆在main.c文件里不是好的选择,庞大的代码文件会是你维护的障碍,明智的做法是,一种功能封装到一个库文件里. 库文件就是你代码开始部分写的#include<xxxx.h>里 ...
- .NETCore 新型 ORM 功能介绍
简介 FreeSql 是一个功能强大的 .NETStandard 库,用于对象关系映射程序(O/RM),支持 .NETCore 2.1+ 或 .NETFramework 4.6.1+. 定义 IFre ...
- JQuery实现列表中复选框全选反选功能封装
我们在做列表的时候经常会遇到全选,反选进行批量处理问题,例如: 我当时就是简单的实现了,然后想封装到公共的js中,封装的太烂,不好意思贴出来了(就是把实现代码之间放到公共js中,然后每个页面都用固定的 ...
- MySoft.Data 2.7.3版本的GitHub托管(ORM升级封装)
MySoft.Data 2.7.3 dotnet ORM 版权 这里版权属于老毛:http://www.cnblogs.com/maoyong 说明 MySoft体系中的ORM组件,这里的版本为2.7 ...
- thinkphp如何写find_in_set这样的orm查询封装
今天写thinkphp的orm封装的时候 需要写一个 select * from table where user_id=xxx and find_in_set(100,group_id)这样的SQL ...
- Android Toast的多功能封装——Android开发之路1
Android封装实现各种功能的Toast GitHub地址:https://github.com/SibreiaDante/ToastUtils 效果图: 方法封装如下: showSingleton ...
随机推荐
- spring Boot 学习(七、Spring Boot与开发热部署)
一.热部署在开发中我们修改一个Java文件后想看到效果不得不重启应用,这导致大量时间 花费,我们希望不重启应用的情况下,程序可以自动部署(热部署).有以下四 种情况,如何能实现热部署.•1.模板引擎 ...
- .Net调用ffmpeg对视频截图
2019/10/27, .Net c#代码片段 摘要:借助ffmpeg对视频/图片截图.生成缩略图,使用命令行调用ffmpeg工具,支持Linux和Windows 网上很多版本都是需要等待4s的做法, ...
- Windows 搭建 nginx rtmp服务器
1.环境开发环境:windows开发工具:ffmpeg.nginx.nginx-rmtp-module.vlc media player播放器 2.准备文件官方ffmpeg下载地址:http://ww ...
- 2019 东方财富网java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.东方财富网等公司offer,岗位是Java后端开发,因为发展原因最终选择去了东方财富网,入职一年时间了,也成为 ...
- pandas-21 Series和Dataframe的画图方法
pandas-21 Series和Dataframe的画图方法 ### 前言 在pandas中,无论是series还是dataframe都内置了.plot()方法,可以结合plt.show()进行很方 ...
- Java检查字符串是否包含中文字符
转自:https://blog.csdn.net/zhanghan18333611647/article/details/80038629 强烈推荐一个大神的人工智能的教程:http://www.ca ...
- 打造属于你的提供者(Provider = Strategy + Factory Method) 设计模式 - Provider Pattern(提供者模式)
打造属于你的提供者(Provider = Strategy + Factory Method) 1.1.1 摘要 在日常系统设计中,我们也许听说过提供者模式,甚至几乎每天都在使用它,在.NET F ...
- 实例讲解ip地址、子网掩码、可用地址范围的计算
关于ip以及相关的掩码.网络号等概念可以查看相关的博客.资料,这些东西很容易找着,一搜一大片.本文主要记录通过实例进行ip相关的计算. 我自己使用的在线网络计算器地址:https://www.sojs ...
- nginx+Gunicorn部署你的Flask项目
https://www.cnblogs.com/minsons/articles/8191219.html 大家在学习python的时候常常都是输入 python 文件名.py 这样启动小脚本 但实际 ...
- Tensorflow简单实践系列(三):图和会话
当执行一个 TensorFlow 函数的时候,并不会马上执行运算,而是把运算存储到一个称为“图”(graph)的数据结构里面. 图存储的各种运算,只有在会话(session)里执行图,才会真正地执行. ...