で、選択のストアドプロシジャ実行のソースを変更
#!/usr/bin/env python3
# import sys
import psycopg2
import psycopg2.extras
import datetime
from sqlalchemy import create_engine
from sshtunnel import SSHTunnelForwarder
print('START : ' + '{0:%Y/%m/%d %H:%M:%S.%f}'.format(datetime.datetime.now()))
try:
server = SSHTunnelForwarder((SV名, 22), ssh_username=UID, ssh_password=P/W, ssh_private_key_password=p/w, ssh_pkey=秘密鍵, remote_bind_address=('127.0.0.1', 5432))
try:
server.start()
try:
strCon = "postgresql+psycopg2://UID:P/W@127.0.0.1:" + '{0:5d}'.format(server.local_bind_port) + "/DB名"
print(strCon)
engine = create_engine(strCon, client_encoding="utf8")
try:
con = engine.raw_connection()
##con = psycopg2.connect(host = SV名, port = 5432, database = DB名, user = UID, password = P/W)
try:
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
try:
cur.execute('call pr_mst_item_select_00 (0, 99, 200, 299, null, null, null, null)')
row = cur.fetchone()
for intValue in row['p_num']:
print('{0:+09}'.format(intValue))
for strValue in row['p_msg']:
print(strValue)
if row['p_result'] == 0:
cur.execute(f'FETCH ALL IN "{row["p_cur"]}"')
rows = cur.fetchall()
else:
rows = None
if rows is None:
print('データ無!')
else:
for row in rows:
ret = '{0:08}'.format(row['item']) + ' : ' + row['name'] + ' : ' + row['kana']
print(ret)
con.rollback()
print('OK')
except (Exception, psycopg2.DatabaseError) as err:
print(err)
con.rollback()
except Exception as err:
print(err)
con.rollback()
finally:
cur.close()
except (Exception, psycopg2.DatabaseError) as err:
print(err)
except Exception as err:
print(err)
finally:
con.close()
except Exception as err:
print(err)
except Exception as err:
print(err)
finally:
server.close()
except Exception as err:
print(err)
except Exception as err:
print(err)
finally:
print('FINISH : ' + '{0:%Y/%m/%d %H:%M:%S.%f}'.format(datetime.datetime.now()))