Djangoへようこそ
IRIS における Python サポートの最近の改善と、InterSystems による Python DB-API サポートへの継続的な作業により、 Django プロジェクトに IRIS サポートを実装しました。Python DB-API の使用により、他のデータベースと連携することが可能です。
Django で、IRIS にデータを保存する単純なアプリケーションを試してみましょう。
このアプリケーションは
GitHub にあります。それをクローンしましょう。
git clone https://github.com/caretdev/django-iris-todo
cd django-iris-todo
次に、Docker-compose でビルドして起動します。
docker-compose up -d --build
IRIS の起動にはしばらくかかりますが、Django アプリケーションは起動をキャッチしてそこにモデルを移行し、アプリケーションも起動します。起動が完了すると、http://localhost:8000/ で利用できるようになり、上記の図のようになります。
仕組み
動作させるには、InterSystems Python DB-API がインストールされている必要があります。最新のプレビューバージョンが含まれているため、2022.1.0.114.0 以上のバージョンが必要です。これは、インスタンスの <INSTALL_DIR>/dev/python/
フォルダにあります。 このファイルは、こちらの GitHub リポジトリからダウンロードすることもできます。
pip3 install intersystems_irispython-3.2.0-py3-none-any.whl
Django の IRIS バックエンドは別のプロジェクトで実装されており、pip を使ってインストール可能です。当然 django そのものも必要なので、それらをインストールしましょう。
pip3 install django django-iris
別の方法として、requirements.txt ファイルを使用して必要なパッケージを Python にインストールすることができます。
pip3 install -r requirements.txt
ただし、このファイルには以下の行が含まれます。
https://raw.githubusercontent.com/intersystems-community/iris-driver-distribution/main/intersystems_irispython-3.2.0-py3-none-any.whl
Django~=4.0.2
django-iris~=0.1.5
Django アプリケーションを IRIS に接続して、todoApp/settings.py ファイルを開きましょう。
DATABASES は、データベースへの接続設定を定義します。
ENGINE は django_IRIS である必要があります。
NAME は IRIS のネームスペースにポイントする必要があります。
接続できるものに変更しましょう。 たとえば、以下のようにします。
DATABASES = {
'default': {
'ENGINE': 'django_iris',
'NAME': 'DJANGOTODO',
'HOST': 'localhost',
'PORT': 1972,
'USER': '_SYSTEM',
'PASSWORD': 'SYS',
}
}
そして移行を開始します。
python3 manage.py migrate
エラーもなく、IRIS 側のすべてのテーブルが作成されました。
これで、アプリケーションを起動することができます。
python3 manage.py runserver
Django には管理者パネルがあります。
python3 manage.py createsuperuser
管理者パネルは、http://localhost:8000/admin/ で利用できます。
IRIS にはこのように格納されています。
完全にサポートするには、ほかにもいくつかの作業が残っています。 InterSystems からの Python DB-API ドライバーはまだ開発中であり、この django-iris プロジェクトも進行中です。
Community Edition ではあまりうまく動作しない可能性があるので注意してください。これは Django がデータベースに接続する方法に起因しており、すべてのライセンスをかなり素早く消費してしまう可能性があるためです。
プロジェクトと、IRIS を使った今後のインパクトを気に入っていただけたら、OpenExchange コンテストでぜひ投票してください。