在ironpython中利用装饰器执行SQL操作的例子

yipeiwu_com5年前Python基础

比较喜欢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()

算是为了好玩吧,回看了下,可能实际用的机会不多

相关文章

Django后端接收嵌套Json数据及解析详解

Django后端接收嵌套Json数据及解析详解

0、干货先写在前 1、前端传值的数据必须使用JSON.stringify()传化 2、后端,通过request.body接收数据,直接使用json.loads解析,解析前,先decod...

Python pandas库中的isnull()详解

问题描述 python的pandas库中有一个十分便利的isnull()函数,它可以用来判断缺失值,我们通过几个例子学习它的使用方法。 首先我们创建一个dataframe,其中有一些数据...

Python 多线程Threading初学教程

Python 多线程Threading初学教程

1.1 什么是多线程 Threading 多线程可简单理解为同时执行多个任务。 多进程和多线程都可以执行多个任务,线程是进程的一部分。线程的特点是线程之间可以共享内存和变量,资源消耗少(...

跟老齐学Python之有容乃大的list(3)

对list的操作 向list中插入一个元素 前面有一个向list中追加元素的方法,那个追加是且只能是将新元素添加在list的最后一个。如: >>> all_user...

python使用循环实现批量创建文件夹示例

代码很简单,其中用到了python的sys模块,大家参考使用吧复制代码 代码如下:import os,sysbase = 'C:/'i = 1for j in range(100):&n...