Question

Hi guys I have question about sending varable to another script on exception. script1.py:

def main():

    conn = None

    try:
        logging.basicConfig(level=logging.DEBUG, filename='{}'.format(error_log))

        try:
        #Define our connection string
            conn_string = ("host=x.x.x.x dbname=xxx user=xxx password=xxx")

            # Get a connection
            conn = psycopg2.connect(conn_string)

            # conn.cursor will return a cursor object
            cursor = conn.cursor()
            print "Connected to PostgreSQL!\n"



            root = open('x','rb').read() 
            p = root
            # Cursor insert into PostgreSQL XML as string
            cursor.execute("SELECT epg_insert_doc_xml_3(%s)",[str(p)])
            conn.commit()

        except psycopg2.DatabaseError, e:

            if conn:
                conn.rollback()
                print 'Error %s' % e 
                            var_x = 'Send some variable %s'% e
                logging.exception("Failed to process Datatbase error! %s" % e )   
                sys.exit(1)

    except:

        logging.exception("Failed to process Datatbase error! %s"% current_time)

    finally:

            if conn:
                conn.close()

if __name__ == "__main__":

    main()

I want to send var_x from this script to this script: script2.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
import smtplib
import time
import pickle
from script1 import *

current_time = time.strftime("%Y/%m/%d %H:%M", time.localtime())

var = var_x

f = '{}  %s'.format(var_x) % current_time

class sendMail:

    def sendMessage(self):
        self.server = smtplib.SMTP('x', 25)
        self.server.login("x", "x")
        msg = "Opis greške:\n %s" % f 
        self.server.sendmail("x", "x", msg)

send = sendMail()
send.sendMessage()

But this dont work, can you help me with some solution about this problem.

Was it helpful?

Solution 2

Try this: execfile("script2.py", {"var_x": var_x})

>>> help(execfile)
execfile(...)
    execfile(filename[, globals[, locals]])

    Read and execute a Python script from a file.
    The globals and locals are dictionaries, defaulting to the current
    globals and locals.  If only globals is given, locals defaults to it.

OTHER TIPS

You don't send variables from script to script. You pass args to functions ...
You can modify your scripts as follow :

script2.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
import smtplib
import time

class Mail:
    def send(self, var_x):
        current_time = time.strftime("%Y/%m/%d %H:%M", time.localtime())
        f = '{}  %s'.format(var_x) % current_time
        self.server = smtplib.SMTP('x', 25)
        self.server.login("x", "x")
        msg = "Opis greške:\n %s" % f 
        self.server.sendmail("x", "x", msg)

script1.py

from script1 import Mail  

def main():
    mail = Mail()
    ...
    mail.send(var_x)
    ...
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top