An open API service indexing awesome lists of open source software.

https://github.com/cgohlke/fmkr

Access FileMaker(tm) server databases
https://github.com/cgohlke/fmkr

database filemaker python

Last synced: 4 months ago
JSON representation

Access FileMaker(tm) server databases

Awesome Lists containing this project

README

          

..
This file is generated by setup.py

Access FileMaker(tm) Server Databases
=====================================

Fmkr is a Python library to access FileMaker(tm) Server 8 Advanced databases
via the XML publishing interface.

"FileMaker" is a registered trademark of Claris International Inc.

:Author: `Christoph Gohlke `_
:License: BSD-3-Clause
:Version: 2026.1.6

Requirements
------------

This revision was tested with the following requirements and dependencies
(other versions may work):

- `CPython `_ 3.11.9, 3.12.10, 3.13.11, 3.14.2
- `Lxml `_ 6.0.2
- `FileMaker(tm) Server 8 Advanced `_

Revisions
---------

2026.1.6

- Improve code quality.
- Support Python 3.12, 3.13, and 3.14.
- Drop support for Python 3.8, 3.9, and 3.10.

2022.9.28

- Convert docstrings to Google style with Sphinx directives.

2022.3.24

- Add type hints.
- Improve string representations of objects.
- Add immutable sequence interface to FMPXMLResult.
- Drop support for Python 3.6 and 3.7 (NEP 29).

2021.3.6

- Update copyright and formatting.

2020.1.1

- Drop support for Python 3.5.
- Update copyright.

2018.8.15

- Move fmkr.py into fmkr package.

2018.5.25

- Use lxml instead of minidom to parse FMPXMLResult.
- Improve string representations of FMPXMLResult and FMField.
- Update error codes.
- Drop support for Python 2.

2006.10.30

- Initial release.

References
----------

1. http://www.filemaker.com/downloads/documentation/fmsa8_custom_web_guide.pdf

Examples
--------

.. code-block:: python

>>> from fmkr import FM, FMError
>>> fmi = FM('filemaker.domain.com', 80, 'http')
>>> fmi.set_db_data('database', 'layout', maxret=5)
>>> fmi.set_db_password('fmuser', 'password')
>>> # create a new record
>>> fmi.add_db_param('FIRST', 'John')
>>> fmi.add_db_param('LAST', 'Doe')
>>> fmi.fm_new()
>>> # find and sort records
>>> fmi.add_db_param('LAST', 'Doe', 'bw')
>>> fmi.add_sort_param('LAST', 'ascend', 1)
>>> fmi.add_sort_param('FIRST', 'ascend', 2)
>>> result = fmi.fm_find()
>>> for record in result:
... print(record['FIRST'], record['LAST'])
...
John Doe
>>> # delete record
>>> recid = result[0]['RECORDID']
>>> fmi.set_record_id(recid)
>>> fmi.fm_delete()
>>> # catch an exception
>>> try:
... fmi.add_db_param('LAST', 'Doe', 'cn')
... fmi.fm_find()
... except FMError as exc:
... print(exc)
...
FileMaker Error 401: No records match the request