[Raspberry Pi] python-fmrest で FileMaker Data API を使う

FileMaker Data API を簡単に操作できる、python-fmrest を使ってみた。

GitHub - davidhamann/python-fmrest: Python wrapper around the FileMaker Data API
https://github.com/davidhamann/python-fmrest

今回は FileMaker Server 上のデータベースを、Raspberry Pi から FileMaker Data API を使って操作する。

環境:
・Raspberry Pi 3 Model B(Buster Desktop)
・VMware vSphere Hypervisor 7.0U3g(英語環境)、VMware Photon OS 5.0 の Docker で FileMaker Server 19.6.3.302

(1)FileMaker Server の Admin Console で「Connectors>FileMaker Data API」を有効にする。

(2)FileMaker Server 上の該当データベースにおいて、「File>Manage>Security>Advanced Settings」で「Privilege Set」を選択(今回は [Full Access] )。「Edit」をクリック。

「Extended Privileges」で「Access via FileMaker Data API (fmrest)」にチェックを入れる。「OK」。

(3)Raspberry Pi で Python3 のバージョン確認。

$ python3 --version
Python 3.7.3

(4)以下のコマンドで Raspberry Pi に python-fmrest をインストール。

$ pip3 install python-fmrest

(5)以下のような test.py というファイルを作る。「field1」フィールドに 123、「field2」フィールドに test と入力したレコードを新規作成する場合。

import fmrest

fms = fmrest.Server(
  '{https://{FMS の IP アドレス}',
  user='{データベースのユーザー名}',
  password='{データベースのパスワード}',
  database='{データベース名}',
  layout='{レイアウト名}',
  verify_ssl=False,
  api_version='v1'
)
fms.login()
hoge = fms.create_record({'field1': "123", 'field2':"test"})
fms.logout()

(6)以下のコマンドで実行。これでレコードが作成される。

$ python3 test.py

(7)次は「field1」フィールドの値が「abc」となっているレコードを一覧してみよう。一覧では field1 と field2 を表示するものとする。以下のようなスクリプトを作成して実行すればいい。

import fmrest

fms = fmrest.Server(
  '{https://{FMS の IP アドレス}',
  user='{データベースのユーザー名}',
  password='{データベースのパスワード}',
  database='{データベース名}',
  layout='{レイアウト名}',
  verify_ssl=False,
  api_version='v1'
)
fms.login()

find_request = [{'field1': 'abc'}]
foundset = fms.find(find_request)
for record in foundset:
  print(record.field1, record.field2)

fms.logout()

(8)次はスクリプトを実行してみよう。スクリプトの実行は、find()、create_record()、delete_record()、edit_record()、get_record() のいずれかのリクエストの一部として実行する必要がある。今回は レコードの作成リクエストで「field1」フィールドに abc と入力し、その上で ABCscript というスクリプトを実行する。スクリプト引数がある場合、None の部分に '{スクリプト引数}' のように書く。レコードの作成で、特にフィールドに何も入力しないなら {'field1': 'abc'} を {} とすればいい。スクリプト名は FileMaker でフォルダーの中に入っていても、そのままスクリプト名を書けばいい。

import fmrest

fms = fmrest.Server(
  '{https://{FMS の IP アドレス}',
  user='{データベースのユーザー名}',
  password='{データベースのパスワード}',
  database='{データベース名}',
  layout='{レイアウト名}',
  verify_ssl=False,
  api_version='v1'
)
fms.login()

hoge = fms.create_record(
  {'field1': 'abc'},
  scripts={
    'after': ['ABCScript', None],
  }
)

fms.logout()

他にもレコードの編集や削除などができるようだ。

参考:
FileMaker + Raspberry Pi で温度湿度をグラフ化 | FileMakerであらゆる業界の業務効率化をかなえる - 株式会社サポータス
https://fmsolution.supportas.co.jp/blog/20220117

| notebook.community
https://notebook.community/davidhamann/python-fmrest/examples/conf_dotfmp_2018

GitHub - davidhamann/python-fmrest: Python wrapper around the FileMaker Data API
https://github.com/davidhamann/python-fmrest

python-fmrest/examples at master · davidhamann/python-fmrest · GitHub
https://github.com/davidhamann/python-fmrest/tree/master/examples


この記事が気に入ったらサポートをしてみませんか?