在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实现socket客户端和服务端简单示例
Feb 24 Python
python通过pil为png图片填充上背景颜色的方法
Mar 17 Python
python实现定时播放mp3
Mar 29 Python
python实现比较两段文本不同之处的方法
May 30 Python
Python的Twisted框架上手前所必须了解的异步编程思想
May 25 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
Python实现的多项式拟合功能示例【基于matplotlib】
May 15 Python
PyCharm代码格式调整方法
May 23 Python
Python整数对象实现原理详解
Jul 01 Python
Django框架教程之中间件MiddleWare浅析
Dec 29 Python
TensorFlow设置日志级别的几种方式小结
Feb 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
php set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
2020/04/26 PHP
javascript高亮效果的二种实现方法
2008/09/14 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
2013/11/06 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
JS修改iframe页面背景颜色的方法
2015/04/01 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
Python实现App自动签到领取积分功能
2018/09/29 Python
解析python的局部变量和全局变量
2019/08/15 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
军训自我鉴定
2013/12/14 职场文书
竞选班长演讲稿
2013/12/30 职场文书
初中三好学生自我鉴定
2014/04/07 职场文书
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
科学发展观演讲稿
2014/09/11 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
培训简讯范文
2015/07/20 职场文书
五年级语文教学反思
2016/03/03 职场文书
java设计模式--七大原则详解
2021/07/21 Java/Android
python数字图像处理:图像的绘制
2022/06/28 Python