在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脚本
Apr 05 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
Python如何通过subprocess调用adb命令详解
Aug 27 Python
Python模拟用户登录验证
Sep 11 Python
python3学习笔记之多进程分布式小例子
Feb 13 Python
在python中以相同顺序shuffle两个list的方法
Dec 13 Python
局域网内python socket实现windows与linux间的消息传送
Apr 19 Python
python opencv 简单阈值算法的实现
Aug 04 Python
python 项目目录结构设置
Feb 14 Python
opencv之颜色过滤只留下图片中的红色区域操作
Jun 05 Python
python3爬虫中多线程的优势总结
Nov 24 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 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框架Phpbean说明
2008/01/10 PHP
那些年一起学习的PHP(一)
2012/03/21 PHP
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
JS实现的倒计时效果实例(2则实例)
2015/12/23 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
2018/11/25 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
详解微信UnionID作用
2019/05/15 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
深入浅析python继承问题
2016/05/29 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
python如何从文件读取数据及解析
2019/09/19 Python
python异常处理和日志处理方式
2019/12/24 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
市场营销专业个人自荐信格式
2013/09/21 职场文书
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
教育科学研究生自荐信
2013/10/09 职场文书
装饰活动策划方案
2014/02/11 职场文书
致800米运动员广播稿
2014/02/16 职场文书
2014年党员自我剖析材料
2014/10/07 职场文书
学校端午节活动总结
2015/02/11 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书