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()を用いて「データベース内にオブジェクトの保存が完了しました」といった文字列の出力する命令などは記述していないので、何も出力されません。しかし、データベース内にオブジェクトが保存されました。
コメント