#! /QOpenSys/pkgs/bin/python # # odbctest.py - test script to retrieve IBM i QUADJRN and QHST entries in syslog message format # using IBM DB2 for i services # # Load Python Modules import signal import pyodbc # Define a signal handler def handler(signum, frame): print('handling Ctrl-C', signum) return # Run the SQL in a generator to avoid loading too much data in to memory def runSql(): try: conn = pyodbc.connect("DSN=*local") cur = conn.cursor() sqlstmt = """ SELECT syslog_facility, syslog_severity, syslog_event FROM TABLE (QSYS2.DISPLAY_JOURNAL('QSYS','QAUDJRN',GENERATE_SYSLOG => 'RFC5424')) WHERE syslog_event IS NOT NULL AND syslog_severity < 5 UNION ALL SELECT syslog_facility, syslog_severity, syslog_event FROM TABLE (QSYS2.HISTORY_LOG_INFO(GENERATE_SYSLOG => 'RFC5424')) WHERE syslog_severity < 5""" cur.execute(sqlstmt) # Retrieve each row of the data set while True: row = cur.fetchone() if row == None: break yield row except pyodbc.DatabaseError as err: raise err def main(): # Define the handler for SIGINT (CTRL+C) signal.signal(signal.SIGINT,handler) try: for row in runSql(): print(row) except Exception as err: print('Error detected reading data or program terminated') exit (1) if __name__ == '__main__': main()