Btrieve 2 SDK セットアップ - Python 用

このチュートリアルでは、Actian Zen および Python 用の Btrieve 2 SDK をインストールしセットアップします。

右側の「このページの内容」では当ページで扱うトピックを示しています。

Btrieve 2 とは

Btrieve 2 SDK は、Actian Zen データベース エンジンの Btrieve 呼び出しの完全なセットを扱う、より直観的で簡素化されたオブジェクト指向のアプリケーション プログラミング インターフェイス(API)です。

Actian Zen を使用したアプリケーション開発で Btrieve 2 SDK を使用する利点には、次のことがあります。

  • ネイティブ言語構文によるデータベースの操作
  • NoSQL スタイルのデータベース アクセス パラダイム
  • さまざまな言語でアプリケーションへのデータベース統合が簡単

Python 用の Btrieve 2 拡張ファイル

Btrieve 2 SDK は C/C++ 開発者向けに提供されていますが、Python、Perl、および PHP 開発者が API を使用できるように、拡張ファイルを作成するための SWIG(Simplified Wrapper and Interface Generator)インターフェイス ファイルも提供しています。

このチュートリアルでは、SWIG インターフェイス ファイルを使用して、Windows および Linux での開発用の Python 拡張を作成する処理を順を追って説明します。

Windows で Python 拡張ファイルを作成する

Windows で、SWIG インターフェイス ファイルを使用して Btrieve 2 SDK の Python 拡張ファイルをセットアップする手順は、ごくわずかで完了します。ほかのチュートリアルで説明したように、Actian Zen データベース エンジンおよび Windows 用の Python がインストール済みであることを前提とします。

Windows 用 SWIG の最新リリースをダウンロードして展開します。この処理は、バージョン 3.0.12 および 4.0.0 の両方でテストされています。わかりやすくするため、SWIG は Windows Path 環境変数で利用可能な場所にインストールしてください。または、後でアプリケーションを実行するときに、インストールした場所を覚えておいてください。

インストールされている Actian Zen バージョン(たとえば v15)と同じバージョンの Btrieve2 SDK(Windows)をダウンロードしてください。

こちらからダウンロードできます。 https://www.agtech.co.jp/actian/support/reference/sdk/access_methods/btrieve/

Visual Studio 2015 以降も必要です。

Python コード用のフォルダーを作成します。ここの例では \MyPrograms を使用します。

Btrieve 2 SDK を抽出し、その場所から MyPrograms フォルダーに次のファイルをコピーします。

  • \win64\btrieveCpp.lib
  • \win64\btrieveC.lib
  • \include\btrieveC.h
  • \include\btrieveCpp.h
  • \swig\btrievePython.swig
  • \swig\btrieveSwig.swig

コマンド プロンプトを開いて MyPrograms フォルダーに変更し、次のコマンドを入力します。

swig -c++ -D_WIN64 -python btrievePython.swig

これにより次のファイルが作成されます。

  • btrievePython.py
  • btrievePython_wrap.cxx

MyPrograms フォルダーに、次のコードを含む setup.py という名前のテキスト ファイルを作成します。

from distutils.core import setup, Extension
btrievePython_module = Extension('_btrievePython', 
  sources=['btrievePython_wrap.cxx'],
  library_dirs=['<MyPrograms location>'], 
  libraries=['btrieveCpp'],  )
setup (name='btrievePython',
  version='1.0',
  author='Actian',
  description="""Compile Btrieve 2 Python module""",
  ext_modules=[btrievePython_module],
  py_modules=["btrievePython"], )

プロンプトで次のコマンドを実行して、btrievePython モジュールをビルドします。

python setup.py build_ext --plat-name="win-amd64"

これにより、コンパイルされた Python ファイル build\lib.win-amd64-3.6\_btrievePython.cp36-win_amd64.pyd が作成されます。

.pyd ファイルの名前を _btrievePython.pyd だけに変更し、このファイルを MyPrograms、または Python インストレーションの DLL ディレクトリにコピーします。

これらの手順が完了したら、Python の環境またはプログラムで "import btrievePython" を実行できます。実行すると、Python で Btrieve2 アプリケーションを書く準備が整います。

Linux で Python 拡張ファイルを作成する

Linux で、SWIG インターフェイス ファイルを使用して Btrieve 2 SDK の Python 拡張ファイルをセットアップする手順は、ごくわずかで完了します。

ほかのチュートリアルで説明したように、Actian Zen データベース エンジンおよび Python(追加の必要なパッケージと共に)がインストール済みであることを前提とします。

Python コード用のフォルダーを作成します。ここの例では /project を使用します。

mkdir ~/project && cd ~/project

Linux 用 SWIG の最新リリースをダウンロードして展開(untar)するか、またはディストリビューションのパッケージ マネージャーを使用して swig パッケージをインストールします。

sudo apt-get update && sudo apt-get install swig

インストールされている Actian Zen バージョン(たとえば v15)と同じバージョンの Btrieve2 SDK(Linux)をダウンロードしてください。

こちらからダウンロードできます。 https://www.agtech.co.jp/actian/support/reference/sdk/access_methods/btrieve/

Btrieve 2 SDK を現在の /project ディレクトリに展開します。[filename] は、ダウンロードしたファイルの名前に置き換えます。

tar -zxf [filename].tar.gz

SDK ディレクトリに入って、必要なファイルを /project ディレクトリにコピーします。[directory] は、抽出されたインストールのディレクトリの名前に置き換えます。

cd [directory]
cp swig/btrievePython.swig ~/project/
cp swig/btrieveSwig.swig ~/project/
cp include/btrieveC.h ~/project/
cp include/btrieveCpp.h ~/project/

project ディレクトリに戻り、SWIG を実行してラッパーを作成します。

cd ~/project
sudo swig -c++ -D__linux__ -python btrievePython.swig

/project ディレクトリに、次のコードを含む setup.py ファイルを作成します。

#!/usr/bin/env python
from distutils.core import setup, Extension
btrievePython_module = Extension('_btrievePython',
  sources=['btrievePython_wrap.cxx'],
  library_dirs=['/usr/local/actianzen/lib64/'],
  runtime_library_dirs=['/usr/local/actianzen/lib64'],
  libraries=['btrieveCpp'])
setup(name='btrievePython',
  version='1.0',
  author='Actian',
  description="""Compile Btrieve 2 Python module""",
  ext_modules=[btrievePython_module],
  py_modules=["btrievePython"],)

setup スクリプトを実行して、共有拡張ファイルを作成します。

sudo python3 setup.py build_ext --inplace

ここでエラーが発生する場合は、Actian Zen と Python ページの「Linux と Python」トピックで説明されている、必要な依存関係がすべてインストールされていることを確認してください。

新しく作成された .so ファイルの名前をより使いやすい名前に変更します。

mv _btrievePython.cpython-37m-x86_64-linux-gnu.so _btrievePython.so

これらの手順が完了したら、Python の環境またはプログラムで "import btrievePython" を実行できます。実行すると、Python で Btrieve2 アプリケーションを書く準備が整います。

データベースに対する Python コマンドの実行からステータス コード 94 が返される場合は、ユーザーが指定されたフォルダーでデータ ファイルを作成するためのアクセス許可を持っていないことを示します。これは、プロジェクト ディレクトリのアクセス規則を変更することで修正できます。

chmod 777 ~/project