在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登录Gmail并发送Gmail邮件的教程
Apr 17 Python
python递归查询菜单并转换成json实例
Mar 27 Python
Django自定义插件实现网站登录验证码功能
Apr 19 Python
python 实现在Excel末尾增加新行
May 02 Python
python3实现域名查询和whois查询功能
Jun 21 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
python 列表输出重复值以及对应的角标方法
Jun 11 Python
python实现猜数字游戏
Mar 25 Python
python绘制动态曲线教程
Feb 24 Python
python pandas利用fillna方法实现部分自动填充功能
Mar 16 Python
python实现文件分片上传的接口自动化
Nov 19 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中$_FILES的使用以及注意事项
2013/07/05 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
实例讲解python函数式编程
2014/06/09 Python
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
Python切换pip安装源的方法详解
2016/11/18 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
python 定时修改数据库的示例代码
2018/04/08 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
车工岗位职责
2013/11/26 职场文书
四个太阳教学反思
2014/02/01 职场文书
付款委托书范本
2014/04/04 职场文书
考生诚信考试承诺书
2014/05/23 职场文书