本次文章主要是通过python监控ETL流程的运行情况;
ETL流程如成功,会将同步时间更新到数据库里去,失败的话时间不会更新,因此本次尝试中首先第一步是使用python连接oracle数据库,比较麻烦的是数据库是32位的,之前的python版本都是64位的,版本兼容的问题困扰了比较久,最后下载了32位的python,使用pycharm切换python环境;
本次尝试主要分三步:
1.使用python连接oracle数据库
2.使用smtplib发送邮件
3.用windows自带的任务计划程序设置定时任务
第一步代码:
db = cx_Oracle.connect('数据库名/密码@host:PORT/SERVICE_NAME')
cursor = db.cursor()
sql = '''
sql语句
'''
result = cursor.execute(sql)
all_date = cursor.fetchall()
db.close()
all_date = pd.DataFrame(all_date)
第二步代码:
msg = MIMEText(' \n'.join(all_date[1]), 'plain', 'utf-8')
username = 'xxx@163.com'
password = 'xxx'
#smtp_server = 'smtp.163.com'
sender = 'xxx@163.com'
receiver = 'xxx@qq.com'
subject = '同步流程出错'
msg['Subject'] = subject
msg['From'] = 'xxx@163.com'
msg['To'] = 'xxx@qq.com'
sever = smtplib.SMTP()
sever.connect('smtp.163.com')
#sever.set_debuglevel(1)
sever.login(username,password)
sever.sendmail(sender,receiver,msg.as_string())
sever.quit()
这里边很奇怪的一步是subject中带有英文就会报错,中文则不会报错,不知道是啥问题
第三步任务计划程序:
这一步使用的是自带的任务计划程序,这一步比较简单,但要注意的是添加参数处填写的是python脚本的位置,起始于是运行脚本的python环境,因为本次尝试的脚本只能在32位的环境下才能连接数据库,因此环境很重要
后续完善方向:可以用python开发调度任务;