在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中MySQLdb和torndb模块对MySQL的断连问题处理
Nov 09 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
Dec 03 Python
Python字典数据对象拆分的简单实现方法
Dec 05 Python
pandas多级分组实现排序的方法
Apr 20 Python
对Python中内置异常层次结构详解
Oct 18 Python
Python 实现两个列表里元素对应相乘的方法
Nov 14 Python
django自定义模板标签过程解析
Dec 14 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
Jun 02 Python
Idea安装python显示无SDK问题解决方案
Aug 12 Python
python操作链表的示例代码
Sep 27 Python
python集合的新增元素方法整理
Dec 07 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 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基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
jquery 弹出层实现代码
2009/10/30 Javascript
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
node通过express搭建自己的服务器
2017/09/30 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
如何在vue里添加好看的lottie动画
2018/08/02 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
Python3直接爬取图片URL并保存示例
2019/12/18 Python
什么是Python变量作用域
2020/06/03 Python
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
关于Assembly命名空间的三个面试题
2015/07/23 面试题
行政管理人员精品工作推荐信
2013/11/04 职场文书
医药代表个人求职信范本
2013/12/19 职场文书
《值日生》教学反思
2014/02/17 职场文书
委托书模板
2014/04/04 职场文书
小学生读书活动总结
2014/06/30 职场文书
高中教师个人工作总结
2015/02/10 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
行政处罚决定书
2015/06/24 职场文书
感恩的心主题班会
2015/08/12 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python