#!/usr/bin/env python #coding: utf8 dbInfo = { "host" : "172.16.210.163", "user" : "icv", "passwd" : "icv1234", "db" : "ICV" } file = "/www/detalleiuni/file.csv" import csv import sys import _mysql_exceptions import smtplib import os from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email.MIMEText import MIMEText from email.Utils import COMMASPACE, formatdate from email import Encoders try: import MySQLdb as DataBase except ImportError, e: errorMsg = """Make sure MySQL-Python is properly installed. Get it at: http://sourceforge.net/projects/mysql-python""" print >>sys.stderr, errorMsg sys.exit(1) class listDefaultValue(list): def __getitem__(self,index): try: return list.__getitem__(self,index) except IndexError: return '' def mail(receiver, sender='icv_errors@iplan.com.ar', subject='ICV Error', text='', files=[], server='localhost'): """ Usage: mail(['someone@example.com'], 'me@example.com', 'test', 'This is a test', files=['/tmp/file1'], 'somemailserver.com') """ assert type(receiver)==list assert type(files)==list msg = MIMEMultipart() msg['From'] = sender msg['To'] = COMMASPACE.join(receiver) msg['Date'] = formatdate(localtime=True) msg['Subject'] = subject msg.attach( MIMEText(text) ) for f in files: part = MIMEBase('application', "octet-stream") part.set_payload( open(f,"rb").read() ) Encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f)) msg.attach(part) smtp = smtplib.SMTP(server) smtp.sendmail(sender, receiver, msg.as_string()) smtp.close() if __name__ == '__main__': csvReader = csv.reader(open(file, 'rb'), escapechar='\\') db = DataBase.connect(host=dbInfo["host"], user=dbInfo["user"], passwd=dbInfo["passwd"], db=dbInfo["db"]) db.autocommit(True) cursor = db.cursor() try: for row in csvReader: row = listDefaultValue(row) try: cursor.callproc("fu_add_cdr", (row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9],row[10],row[11],row[12],row[13],row[14],row[15],row[17],row[22],row[25],row[26],row[31],row[32],row[40],row[121],row[147]) ) except _mysql_exceptions.IntegrityError: print "\nMySQL error: %s - %s\n" % (sys.exc_type, sys.exc_value) except csv.Error, e: sys.exit('file %s, line %d: %s' % (filename, reader.line_num, e)) cursor.callproc('fu_get_log') csvWriter = csv.writer(open('/tmp/error.csv', 'w'), dialect='excel') while(1): row = cursor.fetchone() if not row: break csvWriter.writerow(row) mail(['jluna@iplan.com.ar'], files=['/tmp/error.csv'])