PythonでZODBを用いて作成したデータベース内にオブジェクトの保存する

スポンサーリンク

PythonでZODBを用いて作成したデータベース内にオブジェクトの保存してみます。

この記事は、「PythonでZODBを用いてデータベースを作成する」という記事の続きとなります。

今回は、ZODBを用います。このライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■ZODBを用いて作成したデータベース内にオブジェクトの保存する

では、早速PythonでZODBを用いて作成したデータベース内にオブジェクトの保存するスクリプトを書いていきます。

■コード

from ZODB import FileStorage, DB
import transaction

storage = FileStorage.FileStorage('my_db.fs')
db = DB(storage)
connection = db.open()
root = connection.root()

root['class'] = ['tanaka','yamamoto','miyashita']

transaction.commit()
connection.close()

まずは「from import」でZODBモジュールのFileStorageとDBを呼び出します。その後、storageという変数を定義し、その中でFileStorage.FileStorage()を用います。括弧内には引数,パラメータとしてデータをファイルに保存するストレージを作成するため、「my_db.fs」という名前のストレージを渡します。これでストレージが作成されました。

作成後、dbという変数を定義し、その中でDB()を用います。括弧内には引数,パラメータとしてオブジェクトデータベースを作成するために、ストレージを渡します。今回はstorage変数を渡します。これでデータベースの作成が完了します。

作成が完了後、connectionという変数を定義し、その中でdb変数に対してopen()を用いて、作成したデータベースを開き、接続します。開いた後にrootという変数を定義し、その中でconnection変数に対してroot()を用います。これでデータベース内の「root」にアクセスできるようになりました。

アクセスできるようになった「root」オブジェクトは、すべての永続オブジェクトを保持する辞書で、この辞書にデータを保存します。今回はrootオブジェクトで「class」を新規で指定し、その中に「’tanaka’,’yamamoto’,’miyashita’」というデータを格納します。これで作成したデータベースにオブジェクトを追加しましたが、これは一時的なものなので、これを永続的に保存するようにします。

永続的に保存するようにするために、「import」で「transaction」を呼び出します。その後、transaction.commit()を用います。これで現在のトランザクション(一連の不可分な情報処理)がコミット(変更確定)されます。

その後、connection.close()を用いて、作成したデータベースとの接続を閉じます。

■実行・検証

このスクリプトを「db_object.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、今回はprint()を用いて「データベース内にオブジェクトの保存が完了しました」といった文字列の出力する命令などは記述していないので、何も出力されません。しかし、データベース内にオブジェクトが保存されました。

コメント

タイトルとURLをコピーしました