#!/bin/env python import sys, os import psycopg2 from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT def main(): if len(sys.argv) == 6: thiscript, hostnameip, dspamuser, dspampass, dspamdb, purgescript = sys.argv else: env = os.environ if set(('DSPAM_PgSQL_HOST', 'DSPAM_PgSQL_USER', 'DSPAM_PgSQL_PWD', 'DSPAM_PgSQL_DB', 'DSPAM_PgSQL_PURGE_SQL')) <= set(env): hostnameip = env['DSPAM_PgSQL_HOST'] dspamuser = env['DSPAM_PgSQL_USER'] dspampass = env['DSPAM_PgSQL_PWD'] dspamdb = env['DSPAM_PgSQL_DB'] purgescript = env['DSPAM_PgSQL_PURGE_SQL'] else: print "Usage: %s [database host] [dspam user] [dspam passwd] [dspam dbname] [purge DB script]" %(sys.argv[0]) print "or set the enironment variables:" print "DSPAM_PgSQL_HOST, DSPAM_PgSQL_USER, DSPAM_PgSQL_PWD, DSPAM_PgSQL_DB and DSPAM_PgSQL_PURGE_SQL" sys.exit(1) try: con = psycopg2.connect(database=dspamdb, user=dspamuser, password=dspampass, host=hostnameip) con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # Needed for plpgsql cur = con.cursor() except Exception, e: print "ERROR: ",e sys.exit(3) try: f = open(purgescript, 'r') script = f.read() f.close() except Exception, e: print "ERROR: ",e sys.exit(4) try: cur.execute(script) except Exception, e: print "ERROR: ",e sys.exit(5) con.close() if __name__ == '__main__': main()