背景
需要频繁使用python 对mssql 进程insert into 语句,在此过程中有很多的错误产生(如字段长度不够,一些奇怪字符等),调试起来很不方便,因此写了个装饰器,进行异常捕捉,并将产生错误的插入信息打印出来,这样就能够很直观地发现错在什么地方。
方法
装饰器代码:
def sql_capture(fun):
def add_cap(*args, **kwargs):
try:
fun(*args, **kwargs)
except:
print('Error execute: %s' % fun.__name__)
print(kwargs)
print(traceback.format_exc())
sys.exit()
return add_cap
装饰器的使用:
def basic_info(cur):
user = 'zhangsan'
job = '程序员'
data = (user_edu, job_type)
@sql_capture
def basic_info_to_sql(data): #只在这个函数中用,因此定义在此函数中
cur.execute(
"INSERT INTO [dbo].[id_card]([user], [job])values(%s,%s)", data
)
basic_info_to_sql(data=data) # 调用