standingzzz's Oracle memo

OracleSQLチューニングの豊富な経歴を生かして、主に11gと12cのオプティマイザ動作の違いなどについて、実用的な検証結果をメモしています。

python3.6でOracle12c接続の確認(cx_Oracle)

概要

python3.6でOracle12cへ接続してSQLを実行する際のメモです。

Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
CentOS Linux release 7.3.1611 (Core) 
Python 3.6.2

確認

接続情報
DBserver:oracle12c.test
port:1521
service_name:orclpdb.test
user:test01
password:xxxx
pythonコード

ora_connect.py

import cx_Oracle
import sys
import os
import configparser


def connect_Oracle( server, port, user, pswd, service ):

    try:

        conn = cx_Oracle.connect( user, pswd, server + ':' + port + '/' + service )
        cur = conn.cursor()

        return ( cur )

    except ( cx_Oracle.DatabaseError ) as ex:
        print ( sys.exc_info()[1] )
        raise ex


def exec_Oracle_SQL( cur, sql ):

    try:

        cur.execute( sql )
        rows = cur.fetchall()

        return ( rows )

    except ( cx_Oracle.DatabaseError ) as ex:
        print ( sys.exc_info()[1] )
        raise ex


if __name__ == '__main__':
    cur = connect_Oracle( 'oracle12c.test', '1521', 'test01', 'xxxx', 'orclpdb.test' )
    rows = exec_Oracle_SQL( cur, 'select username, user_id from user_users' )
    for row in rows:
        print ( row[0] + ', ', end = "" )
        print ( row[1] )
実行結果
[standingzzz@apl common]$ python ora_connect.py 
TEST01, 108
[standingzzz@apl common]$