在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 正则表达式操作指南
May 04 Python
简单介绍Python的Django框架加载模版的方式
Jul 20 Python
Python实现将文本生成二维码的方法示例
Jul 18 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
python email smtplib模块发送邮件代码实例
Apr 26 Python
如何使用Python的Requests包实现模拟登陆
Apr 27 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
Aug 09 Python
python 动态迁移solr数据过程解析
Sep 04 Python
Django框架models使用group by详解
Mar 11 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
python基础学习之递归函数知识总结
May 26 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
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
PHP的反射机制实例详解
2017/03/29 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
ES6中非常实用的新特性介绍
2016/03/10 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
苹果音乐订阅:Apple Music
2018/08/02 全球购物
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
计算机大学生的自我评价
2013/10/15 职场文书
简历自我评价怎么写好呢?
2014/01/04 职场文书
买房子个人收入证明
2014/01/16 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
推广普通话演讲稿
2014/05/23 职场文书
2014年终工作总结范本
2014/12/15 职场文书
2016新年晚会开场白
2015/12/03 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
利用Python实现Picgo图床工具
2021/11/23 Python
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技
Win11快速关闭所有广告推荐
2022/04/19 数码科技