在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 相关文章推荐
wxPython之解决闪烁的问题
Jan 15 Python
Python元组拆包和具名元组解析实例详解
Mar 26 Python
python 通过 socket 发送文件的实例代码
Aug 14 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
python输入多行字符串的方法总结
Jul 02 Python
django foreignkey(外键)的实现
Jul 29 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
python实现简单银行管理系统
Oct 25 Python
python flask搭建web应用教程
Nov 19 Python
Python一行代码解决矩阵旋转的问题
Nov 30 Python
用Python爬取某乎手机APP数据
Jun 15 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
一个改进的UBB类
2006/10/09 PHP
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
php 多文件上传的实现实例
2016/10/23 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
用jquery来定位
2007/02/20 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
Ajax验证用户名或昵称是否已被注册
2017/04/05 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
python socket 超时设置 errno 10054
2014/07/01 Python
Python模拟登陆实现代码
2017/06/14 Python
python音频处理用到的操作的示例代码
2017/10/27 Python
利用Python如何生成便签图片详解
2018/07/09 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
appium+python adb常用命令分享
2020/03/06 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
美国医生配方营养补充剂供应商:Healthy Directions
2019/07/10 全球购物
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
药学专业学生的自我评价分享
2014/02/06 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
2016关于军训的心得体会
2016/01/11 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
vue实现列表垂直无缝滚动
2022/04/08 Vue.js
Python采集壁纸并实现炫轮播
2022/04/30 Python
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers