Моя работа была бы проще или, по крайней мере, менее утомительной, если бы я мог придумать автоматизированный способ (желательно в сценарии Python) извлечения полезной информации из базы данных FileMaker Pro. Я работаю на машине Linux, и база данных FileMaker находится в той же локальной сети, что и на машине OS X. Я могу войти в веб-интерфейс со своего компьютера.
Я хорошо разбираюсь в SQL, и если бы кто-нибудь мог указать мне на какой-нибудь плагин FileMaker, который мог бы предоставить мне SQL-доступ к данным в FileMaker, я был бы рад. Все, что я нашел, идет только в обратном направлении: если FileMaker получает данные из источников SQL. Не полезно.
Это не мой первый выбор, но я бы использовал Perl вместо Python, если бы под рукой было решение Perl-y.
Примечание: службы XML / XSLT (как предлагают некоторые) доступны только на FM-сервере, но не на FM Pro. В противном случае это, вероятно, было бы лучшим решением. ODBC оказывается чрезвычайно трудным даже для работы. Когда вы его настраиваете, от FM нет никакой обратной связи, поэтому вам придется копаться в /var/log/system.log и разбирать непонятные сообщения об ошибках.
Вывод: Я заставил его работать, запустив сценарий python локально на машине, которая запрашивает базу данных FM через соединения ODBC. Сценарий на самом деле является TCPServer, который принимает подключения к сокетам от других систем в локальной сети, выполняет запросы и возвращает данные через подключение к сокету. Мне пришлось сделать это, чтобы обойти тот факт, что FM Pro принимает соединения ODBC только локально (для внешних соединений требуется FM-сервер).






В самом деле уже давно прошло с тех пор, как я что-то делал с FileMaker Pro, но я знаю, что у него есть возможности для подключения к нему ODBC (и JDBC) (однако я не знаю, как и если это переводится в мир linux / perl / python).
В этой статье показано, как предоставить общий доступ к данным FileMaker через ODBC и JDBC:
.
Совместное использование данных FileMaker Pro через ODBC или JDBC
Оттуда, если вы можете создать соединение ODBC / JDBC, вы можете запрашивать данные по мере необходимости.
Для получения драйверов вам понадобится установочный компакт-диск FileMaker Pro. Этот документ подробно описывает процесс для FMP 9 - он аналогичен для версий 7.x и 8.x. Версии 6.x и более ранние полностью отличаются, и я бы не стал пытаться (поддержка xDBC в этих предыдущих версиях в лучшем случае «минимальна»).
FMP 9 поддерживает стандартный синтаксис SQL-92 (в основном). Обратите внимание, что вместо того, чтобы напрямую запрашивать таблицы, вы запрашиваете, используя имя «вхождения таблицы», которое служит своего рода псевдонимом таблицы. Если таблицы данных хранятся в нескольких файлах, можно создать один файл FMP с экземплярами / псевдонимами таблиц, указывающими на эти таблицы данных. Существует «недокументированная функция», при которой в таком файле также должна быть определена таблица и эта таблица «связана» с любой другой таблицей на графе отношений (не имеет значения, какая именно) для доступа ODBC для работы. В противном случае ваши запросы всегда будут безрезультатными.
В PDF-документе подробно описаны все ограничения использования интерфейса xDBC, который предоставляет FMP. Простые запросы выполняются достаточно быстро, ymmv. Я обнаружил, что производительность запросов, определяющих оператор "LIKE", ниже звездной.
FMP также имеет интерфейс XML / XSLT, который можно использовать для запроса данных FMP через соединение HTTP. Он также предоставляет класс PHP для доступа и использования данных FMP в веб-приложениях.
Если вы предпочитаете Python, вам может быть интересно попробовать Python Wrapper для Filemaker. Он обеспечивает двусторонний доступ к данным Filemaker через встроенные XML-службы Filemaker. Вы можете найти достаточно подробную информацию по этому поводу по адресу: