jaydebeapiパッケージ(ライブラリ)を利用すればPythonからもJDBCを使ってデータベースへ接続する事ができます。jaydebeapiは内部でJPype1ライブラリを利用しているので、JPype1パッケージも事前にインストールしておく必要があります。また、JAVAを使うので実行の際にはJAVA_HOME環境変数へ設定しておく必要もあります。
事前確認
-- JAVA_HOMEの確認
--
python_test >> $env:JAVA_HOME
C:\Program Files\Java\jdk-17
python_test >>
-- 現在インストールされているパッケージの確認
--
python_test >> pip list
Package Version
------------------------- --------
altgraph 0.17.4
JayDeBeApi 1.2.3
JPype1 1.5.0
packaging 24.1
pefile 2023.2.7
pip 24.1.2
pyinstaller 6.9.0
pyinstaller-hooks-contrib 2024.7
pywin32-ctypes 0.2.2
setuptools 65.5.0
python_test >>
ソースファイル
import jaydebeapi
import configparser
# configparserオブジェクトを作成
config = configparser.ConfigParser()
# UTF-8エンコーディングでconfig.iniファイルを読み込む
with open('connect_config.ini', 'r', encoding='utf-8') as file:
config.read_file(file)
# データベース接続情報を取得
db_config = config['database']
url = db_config['url']
driver = db_config['driver']
username = db_config['username']
password = db_config['password']
classpath = db_config['classpath']
# SQLクエリを取得
queries = config['queries']
select_fruit_query = queries['select_fruit']
# データベース接続
conn = jaydebeapi.connect(driver, url, [username, password], classpath)
# カーソル作成
curs = conn.cursor()
# クエリ実行
curs.execute(select_fruit_query)
# 結果を取得
results = curs.fetchall()
# 結果を表示
for row in results:
print(row)
# カーソルと接続を閉じる
curs.close()
conn.close()
connect_config.iniファイル
Windows環境の例
[database]
# データベースへの接続URL
url = jdbc:postgresql://vm022:5432/myposdb
# JDBCドライバのクラス名
driver = org.postgresql.Driver
# データベースユーザー名
username = sooni
# データベースパスワード
password = soopass
# JDBCドライバのパス
classpath = D:/python_test/postgresql-42.7.3.jar
[queries]
select_fruit = SELECT * FROM fruit
Linux環境の例
[database]
# データベースへの接続URL
url = jdbc:postgresql://vm022:5432/myposdb
# JDBCドライバのクラス名
driver = org.postgresql.Driver
# データベースユーザー名
username = sooni
# データベースパスワード
password = soopass
# JDBCドライバのパス
classpath = /root/lib/postgresql-42.5.4.jar
[queries]
select_fruit = SELECT * FROM fruit