在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 18 Python
python集合用法实例分析
May 30 Python
Python 功能和特点(新手必学)
Dec 30 Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
Python工程师面试必备25条知识点
Jan 17 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
如何利用python进行时间序列分析
Aug 04 Python
python快速安装OpenCV的步骤记录
Feb 22 Python
用Python远程登陆服务器的步骤
Apr 16 Python
Python通过loop.run_in_executor执行同步代码 同步变为异步
Apr 11 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下安装配置fckeditor编辑器的方法
2011/03/02 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
childNodes.length与children.length的区别
2009/05/14 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
javaScript基础详解
2017/01/19 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
python 排列组合之itertools
2013/03/20 Python
Python 操作MySQL详解及实例
2017/04/30 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
Python去除字符串前后空格的几种方法
2019/03/04 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
大三学习计划书范文
2014/05/02 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
班主任经验交流材料
2014/12/16 职场文书
绿色环保倡议书
2015/04/28 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript