在ironpython中利用装饰器执行SQL操作的例子
比较喜欢python的装饰器,试了下一种用法,通过装饰器来传递sql,并执行返回结果
这个应用应该比较少
为了方便起见,直接使用了ironpython,连接的mssqlserver
#-*-coding:utf-8-*-
importclr
clr.AddReference('System.Data')
fromSystem.Dataimport*
fromfunctoolsimportwraps
conn_str="server=localhost;database=DB_TEST;uid=sa;password=sa2008"
defmssql(sql):
defhandler_result(rs):
rst=[]
whilers.Read():
rst.Add(rs[0])
returnrst
defdecorator(fn):
@wraps(fn)
defwrapper(*args,**kwargs):
TheConnection=SqlClient.SqlConnection(conn_str)
TheConnection.Open()
try:
MyAction=SqlClient.SqlCommand(sql,TheConnection)
MyReader=MyAction.ExecuteReader()
exceptException,ex:
raiseAssertionError(ex)
rst_data=handler_result(MyReader)
kwargs["sql_rst"]=rst_data
result=fn(*args,**kwargs)
MyReader.Close()
TheConnection.Close()
returnresult
returnwrapper
returndecorator
@mssql(sql="Selectgetdate()")
defget_data(sql_rst=""):
printsql_rst[0]
get_data()
算是为了好玩吧,回看了下,可能实际用的机会不多