在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显示天气预报
Mar 02 Python
Python实现把回车符\r\n转换成\n
Apr 23 Python
Python中一般处理中文的几种方法
Mar 06 Python
详解解决Python memory error的问题(四种解决方案)
Aug 08 Python
python实现树的深度优先遍历与广度优先遍历详解
Oct 26 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 Python
python飞机大战pygame游戏之敌机出场实现方法详解
Dec 17 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 Python
python程序需要编译吗
Jun 19 Python
pytorch SENet实现案例
Jun 24 Python
python调试工具Birdseye的使用教程
May 25 Python
python opencv旋转图片的使用方法
Jun 04 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
天津市收音机工业发展史
2021/03/04 无线电
PHP取进制余数函数代码
2012/01/19 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
使用Nodejs连接mongodb数据库的实现代码
2017/08/21 NodeJs
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
2018/01/11 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
layui的select联动实现代码
2019/09/28 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
Python实现批量转换文件编码的方法
2015/07/28 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
简单了解python的一些位运算技巧
2019/07/13 Python
python中sympy库求常微分方程的用法
2020/04/28 Python
openCV提取图像中的矩形区域
2020/07/21 Python
俄罗斯运动鞋商店:Sneakerhead
2018/05/10 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
总监职责范文
2013/11/09 职场文书
英文简历中的自我评价用语
2013/12/09 职场文书
中学生爱国演讲稿
2013/12/31 职场文书
上级检查欢迎词
2014/01/18 职场文书
网络程序员自荐信
2014/01/25 职场文书
四群教育工作实施方案
2014/03/26 职场文书
团队精神口号
2014/06/06 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
2014年妇女工作总结
2014/12/06 职场文书