una tutorial script scraping pagina medium libreria extraer datos con python linux perl scripting filemaker

tutorial - scraping python 3



¿La mejor forma de extraer datos de una base de datos de FileMaker Pro en un script? (3)

Ha pasado mucho tiempo desde que hice algo con FileMaker Pro, pero sé que tiene capacidades para hacer una conexión ODBC (y JDBC) (sin embargo, no sé cómo, o si, eso se traduce al mundo de linux / perl / python).

Este artículo muestra cómo compartir / exponer sus datos de FileMaker a través de ODBC y JDBC:
Compartir datos de FileMaker Pro a través de ODBC o JDBC

A partir de ahí, si puede crear una conexión ODBC / JDBC, puede consultar datos según sea necesario.

Mi trabajo sería más fácil, o al menos menos tedioso si pudiera encontrar una forma automática (preferiblemente en un script de Python) para extraer información útil de una base de datos de FileMaker Pro. Estoy trabajando en una máquina Linux y la base de datos de FileMaker está en la misma LAN ejecutándose en una máquina OS X. Puedo iniciar sesión en la interfaz webby desde mi máquina.

Soy bastante útil con SQL, y si alguien pudiera indicarme algún complemento de FileMaker que pudiera darme acceso SQL a los datos en FileMaker, estaría encantado. Todo lo que he encontrado va en la otra dirección: tener FileMaker para obtener datos de fuentes SQL. Inútil.

No es mi primera opción, pero usaría Perl en lugar de Python si hubiera una solución Perl-y a mano.

Nota : Los servicios XML / XSLT (como lo sugieren algunos) solo están disponibles en el servidor FM, no en FM Pro. De lo contrario, esa sería probablemente la mejor solución. ODBC se está volviendo extremadamente difícil incluso de funcionar. Hay absolutamente cero comentarios de FM cuando lo configura, por lo que debe buscar en /var/log/system.log y analizar mensajes de error poco claros.

Conclusión : Lo conseguí funcionando ejecutando un script python localmente en la máquina que consulta la base de datos FM a través de las conexiones ODBC. El script es en realidad un servidor TCPS que acepta conexiones de socket desde otros sistemas en la LAN, ejecuta las consultas y devuelve los datos a través de la conexión de socket. Tuve que hacer esto para eludir el hecho de que FM Pro solo acepta conexiones ODBC localmente (se requiere un servidor FM para las conexiones externas).


Necesitará el CD de instalación de FileMaker Pro para obtener los controladores. Este documento detalla el proceso para FMP 9 - es similar para las versiones 7.x y 8.x también. Las versiones 6.xy anteriores son completamente diferentes y no me molestaría en intentarlo (el soporte de xDBC en esas versiones anteriores es "mínimo" en el mejor de los casos).

FMP 9 admite la sintaxis estándar SQL-92 (principalmente). Tenga en cuenta que en lugar de consultar tablas directamente, consulta utilizando el nombre de "aparición de tabla" que sirve como un alias de tabla de géneros. Si las tablas de datos se almacenan en varios archivos, es posible crear un solo archivo FMP con apariciones / alias de tabla que apunten a esas tablas de datos. Hay una "característica no documentada" donde dicho archivo debe tener una tabla definida también y esa tabla "relacionada" con cualquier otra tabla en el gráfico de relaciones (no importa cuál) para que funcione el acceso ODBC. De lo contrario, sus consultas siempre no mostrarán resultados.

El documento PDF detalla todas las limitaciones del uso de la interfaz xDBC que proporciona FMP. El rendimiento de las consultas simples es razonablemente rápido, ymmv. He encontrado que el rendimiento de las consultas que especifican el operador "LIKE" es menos que estelar.

FMP también tiene una interfaz XML / XSLT que puede usar para consultar datos FMP a través de una conexión HTTP. También proporciona una clase PHP para acceder y usar datos FMP en aplicaciones web.


Si su inclinación es hacia Python, puede que esté interesado en verificar Python Wrapper for Filemaker. Proporciona acceso bidireccional a los datos de Filemaker a través de los servicios XML integrados de Filemaker. Puede encontrar información bastante completa sobre esto en:

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