importdatetimeimportosimportzipfilefrom ftplib importFTPfrom oracle_pool importOraclePoolimportpandas as pd#数据库连接池
from send_email importEmail, Messages
oracle= OraclePool('Oracle')#原生连接共pandas使用
conn = OraclePool.conn('Oracle')defexport_chsj():
sql2='''
select * from temp_table'''
sfcvhb=pd.read_sql(sql2,conn)#shape[0]就是读取矩阵第一维度的长度,取查到多少行数据
column =sfcvhb.shape[0]
file_list=[]
path=os.getcwd()if column < 800000:
now= datetime.datetime.now().strftime('%Y%m%d%H%M%S')
file_name= path + '/file/%s导出信息.xlsx' %now
writer=pd.ExcelWriter(file_name)
sfcvhb.to_excel(writer, sheet_name='data_param', startcol=0, startrow=0, index=False)
writer.save()
file_list.append(file_name)else:
page=0while page * 800000
startrow= page * 800000
if (page + 1) * 800000 >column:
endrow=columnelse:
endrow= (page + 1) * 800000page+= 1now= datetime.datetime.now().strftime('%Y%m%d%H%M%S')
file_name= path + '/file/%s导出信息.xlsx' %now
writer=pd.ExcelWriter(file_name)
sfcvhb[startrow:endrow].to_excel(writer, sheet_name='data_param', startcol=0, startrow=0, index=False)
writer.save()
file_list.append(file_name)
ftp=FTP()
ftp.connect("szftp.*****.com", 21)
ftp.login('********', '********')
ftp.set_pasv(False)
ftp.cwd("/file/")
today= datetime.datetime.now().strftime('%Y%m%d%H%M')
ftp_file= today + '.zip'zip= zipfile.ZipFile(ftp_file, 'w', zipfile.ZIP_DEFLATED)for file infile_list:
zip.write(file)
zip.close()
upload(ftp,"ftp_" +ftp_file, ftp_file)print('ftp upload ok!')
ftp.quit()try:
message= """
导出信息,数据请通过链接下载:http://szftp.****.com/1807090053/file/ftp_"""+ftp_file+"""
"""my_user= ['***@qq.com']my_sender= "****@qq.com"message= Messages(my_sender, my_user, "导出信息", message).generate_message()
Email(my_sender, my_user,"*****", "mail.qq.com").send_mail(message)exceptException as e:print(e)defupload(f, remote_path, local_path):
fp= open(local_path, "rb")
buf_size= 4096f.storbinary("STOR {}".format(remote_path), fp, buf_size)
fp.close()defdownload(f, remote_path, local_path):
fp= open(local_path, "wb")
buf_size= 1024f.retrbinary('RETR {}'.format(remote_path), fp.write, buf_size)
fp.close()if __name__=='__main__':
export_chsj()