在ironpython中利用装饰器执行SQL操作的例子


Posted in Python onMay 02, 2015

比较喜欢python的装饰器, 试了下一种用法,通过装饰器来传递sql,并执行返回结果
这个应用应该比较少
为了方便起见,直接使用了ironpython, 连接的mssql server

# -*- coding: utf-8 -*-
import clr
clr.AddReference('System.Data')
from System.Data import *
from functools import wraps

conn_str = "server=localhost;database=DB_TEST;uid=sa;password=sa2008"

def mssql(sql):
  def handler_result(rs):
    rst = []
    while rs.Read():
      rst.Add(rs[0])
    return rst


  def decorator(fn):
    @wraps(fn)
    def wrapper(*args, **kwargs):
      TheConnection = SqlClient.SqlConnection(conn_str)
      TheConnection.Open()
      try:
        MyAction = SqlClient.SqlCommand(sql, TheConnection)
        MyReader = MyAction.ExecuteReader()
      except Exception,ex:
        raise AssertionError(ex)
      rst_data = handler_result(MyReader)
      kwargs["sql_rst"] = rst_data
      result = fn(*args, **kwargs)
      MyReader.Close()
      TheConnection.Close()
      return result
    return wrapper
  return decorator



@mssql(sql="Select getdate()")
def get_data(sql_rst=""):
  print sql_rst[0]

get_data()

算是为了好玩吧,回看了下,可能实际用的机会不多

Python 相关文章推荐
Python 功能和特点(新手必学)
Dec 30 Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
Python模拟登录的多种方法(四种)
Jun 01 Python
python 简单照相机调用系统摄像头实现方法 pygame
Aug 03 Python
[原创]Python入门教程4. 元组基本操作
Oct 31 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 Python
如何用Python来搭建一个简单的推荐系统
Aug 07 Python
python实现抠图给证件照换背景源码
Aug 20 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
Python yield的用法实例分析
Mar 06 Python
python 生成任意形状的凸包图代码
Apr 16 Python
python不同版本的_new_不同点总结
Dec 09 Python
用Python编写简单的定时器的方法
May 02 #Python
用Python程序抓取网页的HTML信息的一个小实例
May 02 #Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 #Python
在Python的Django框架中用流响应生成CSV文件的教程
May 02 #Python
详细解读Python中的__init__()方法
May 02 #Python
举例讲解Python的Tornado框架实现数据可视化的教程
May 02 #Python
Python的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 #Python
You might like
PHP新手上路(三)
2006/10/09 PHP
给初学者的30条PHP最佳实践(荒野无灯)
2011/08/02 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
Yii2中SqlDataProvider用法示例
2016/09/22 PHP
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
python 爬取微信文章
2016/01/30 Python
通过源码分析Python中的切片赋值
2017/05/08 Python
Python使用pymysql小技巧
2017/06/04 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
Python读写锁实现实现代码解析
2020/11/28 Python
毕业自荐信
2013/12/16 职场文书
函授自我鉴定范文
2014/02/06 职场文书
法制宣传实施方案
2014/03/13 职场文书
快餐公司创业计划书
2014/04/29 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
城市规划应届毕业生自荐信
2014/07/04 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
2014年科研工作总结
2014/12/03 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
Python echarts实现数据可视化实例详解
2022/03/03 Python
python自动化测试之Selenium详解
2022/03/13 Python