在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 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 Python
python生成随机验证码(中文验证码)示例
Apr 03 Python
windows系统中python使用rar命令压缩多个文件夹示例
May 06 Python
Python中强大的命令行库click入门教程
Dec 26 Python
python字符串常用方法
Jun 14 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
python实现坦克大战游戏 附详细注释
Mar 27 Python
Python使用itchat 功能分析微信好友性别和位置
Aug 05 Python
python系列 文件操作的代码
Oct 06 Python
Python timer定时器两种常用方法解析
Jan 20 Python
Python偏函数实现原理及应用
Nov 20 Python
Python带你从浅入深探究Tuple(基础篇)
May 15 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+mysql留言本源码
2009/11/11 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
JavaScript 面向对象的 私有成员和公开成员
2010/05/13 Javascript
js constructor的实际作用分析
2011/11/15 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
jquery复选框全选/取消示例
2013/12/30 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
Vue Ajax跨域请求实例详解
2017/06/20 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
Pycharm调试程序技巧小结
2020/08/08 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
服务之星事迹材料
2014/05/03 职场文书
绿色环保演讲稿
2014/05/10 职场文书
会计电算化实训报告
2014/11/04 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP