Лучший способ извлечь данные из базы данных FileMaker Pro с помощью скрипта?

Моя работа была бы проще или, по крайней мере, менее утомительной, если бы я мог придумать автоматизированный способ (желательно в сценарии 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-сервер).

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
10
0
10 426
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

В самом деле уже давно прошло с тех пор, как я что-то делал с 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. Вы можете найти достаточно подробную информацию по этому поводу по адресу:

http://code.google.com/p/pyfilemaker/

Другие вопросы по теме