python-fmrest
python-fmrest is a wrapper around the FileMaker Data API.
No need to worry about manually requesting access tokens, setting the right http headers, parsing responses, ...
Quick example:
>>> fms = fmrest.Server('https://your-server.com',
user='admin',
password='admin',
database='Contacts',
layout='Contacts')
>>> fms.login()
>>> record = fms.get_record(1)
>>> record.name
John Doe
Supported Features
All API paths can be served:
- auth
- record
- find
- global
- script
Feel free to contribute!
If you would like to contribute, you can help with the code, try it out and report
There's always room for improvement!
Questions/problems? Open a new issue. You can also contact me directly at dh@davidhamann.de.
Install
You need Python 3.6 and FileMaker Server/Cloud 17.
You can install the library like this (preferably in a virtualenv):
pip install python-fmrest
Or the latest master:
pip install https://github.com/davidhamann/python-fmrest/archive/master.zip
Usage Examples
Examples can be found in the examples directory. Can't figure something out or feel an example is missing? Please file an issue.
Local development / running tests
Make sure to have requirements-dev.txt installed:
pip install -r requirements-dev.txt
Running pytest
will run all tests. To run specific tests, specify the path:
pytest tests/unit
For running tests/integration
you will need to have a real FileMaker Server and a test database.
For static type checking, please use mypy
:
mypy fmrest
To have all tests plus static type checks run every time before a commit, please install the git hook:
cd hooks
chmod +x install.sh pre-commit.sh run-tests.sh
./install.sh
TO DO
Some bits and pieces are not implemented yet.
Examples of what I can think of:
- OAuth support
- Handling of reserved field names (currently,
record_id
,modification_id
,is_dirty
clash with used properties and you will not be able to read your own fields with the same name) - Needs more test coverage, e.g. for
get_records()
,find()
,edit_record()
- Some more usage examples on how to create, edit, delete, set globals, etc. Tell me where you have issues by opening an issue.
- cli support would be great at some point in the future :-)