redirecting stdout/err to mysql table
pruebauno at latinmail.com
pruebauno at latinmail.com
Wed Nov 19 10:25:21 EST 2008
On Nov 18, 2:07 pm, n00b <pyn... at gmail.com> wrote:
> greetings,
>
> i need to log to the db directly and wrote a little script to do so.
> since i'm pretty new to python,
> i was wondering if a) you could review the enclosed code and b)
> provide suggestions to harden to code to turn it into a more general,
> broadly reusable class.
>
> thank you very much.
>
> import sys
> import MySQLdb
>
> class DBLogger(object):
> def __init__(self):
> self.db_name = 'xxx'
> self.db_host = '127.0.0.1'
> self.db_table = 'yyy'
> self.db_uname = 'root'
> self.db_passwd = ''
> self.db_port = 3306
> self.db = None
> self.cur = None
> self.sql = 'INSERT INTO %s' %self.db_table + ' VALUES(null, NOW
> (), %s)'
>
> def openDb(self):
> try:
> self.db = MySQLdb.connect(host = self.db_host,
> user = self.db_uname,
> passwd = self.db_passwd,
> db = self.db_name,
> )
>
> self.cur = self.db.cursor()
> return self.db, self.cur
> except Exception, e:
> sys.stdout = sys.__stdout__
> sys.stderr = sys.__stderr__
> print e[0], e[1]
> sys.exit(1)
>
> def closeDb(self):
> self.cur.close()
> self.db.close()
>
> def write(self, string):
> s = string.strip('\n')
> if not s=='':
> self.openDb()
> self.cur.execute(self.sql, (s))
> self.db.commit()
> self.closeDb()
>
> dbl = DBLogger()
> sys.stdout = dbl
> sys.stderr = dbl
> #a = 'test string'
> #dbl.write(a)
>
> print 'a b c '
> sys.stdout = sys.__stdout__
> sys.stderr = sys.__stderr__
>
> thanks again for your time
Looks good to me.
More information about the Python-list
mailing list