[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 を使って操作する。
(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
この記事が気に入ったらサポートをしてみませんか?