在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显示进度条的方法
Sep 20 Python
python删除列表中重复记录的方法
Apr 28 Python
Python多进程机制实例详解
Jul 02 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
May 31 Python
分享几道你可能遇到的python面试题
Jul 24 Python
Python实现的FTP通信客户端与服务器端功能示例
Mar 28 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 Python
Python通过yagmail实现发送邮件代码解析
Oct 27 Python
使用python操作lmdb对数据读取的实例
Dec 11 Python
Python+Pillow+Pytesseract实现验证码识别
May 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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
PHP加密解密函数详解
2015/10/28 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
自己的js工具 Cookie 封装
2009/08/21 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
vue生命周期实例小结
2018/08/15 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
python list的index()和find()的实现
2020/11/16 Python
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
Urban Outfitters英国官网:美国平价服饰品牌
2016/11/25 全球购物
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
经典优秀个人求职信分享
2013/12/12 职场文书
工商管理专业职业生涯规划
2014/01/01 职场文书
教师求职自荐信
2014/03/09 职场文书
法律进机关实施方案
2014/03/12 职场文书
家长通知书家长评语
2014/04/17 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
离职感谢信
2015/01/21 职场文书
php中pcntl_fork详解
2021/04/01 PHP