2012-08-03 19 views
6

¿Es posible usar sqlobject para conectarse a una base de datos mysql de iron python? ¿Si es así, cómo? ¿Qué debo instalar?¿Cómo instalar y usar sqlobject + mysql en iron python?

Tengo instalado sqlobject para cpython y funciona bien, pero si uso ese mismo paquete en ironpython obtengo "ImportError: ningún módulo llamado _mysql". Entiendo que esto signifique que ironpython no puede cargar los archivos .dlls basados ​​en C necesarios para acceder a la API de mysql. ¿Cuál es la solución, o hay una?

+0

si usted echa un vistazo a esta [link] (http://www.ironpython.info/index. php/Databases_with_Odbc) muestra cómo usar Odbc para conectarse, pero la instalación no sé si ya lo has hecho instalado pero esta es la única solución que pude encontrar. (solo usando MySQL) –

Respuesta

-1

Si ves esto, lo más probable cometió un error al instalar MySQLdb; volver a leer (o leer) README. _mysql es el módulo C de bajo nivel que interactúa con la biblioteca del cliente MySQL.

Varias versiones de MySQLdb en el pasado han tenido problemas de compilación en plataformas "raras"; "raro" en este caso significa "no Linux", aunque generalmente no hay problemas en las plataformas Unix/POSIX, incluidos los BSD y Mac OS X. Windows ha sido más problemático, en parte porque no hay mysql_config disponible en la instalación de Windows de MySQL 1.2.1 resuelve la mayoría, si no todos, de estos problemas, pero igual tendrá que editar un archivo de configuración para que la instalación sepa dónde encontrar MySQL y qué bibliotecas incluir.

ImportError: libmysqlclient_r.so.14: cannot open shared object file: No such file or directory 

El número después .so puede variar, pero esto significa que tiene una versión de MySQLdb compilado con una versión de MySQL, y ahora está tratando de ejecutar contra una versión diferente. La versión de biblioteca compartida tiende a cambiar entre versiones principales.

Solución: reconstruyó MySQLdb u obtiene la versión correspondiente de MySQL.

Otra cosa que puede causar esto: las bibliotecas de MySQL pueden no estar en la ruta del sistema.

Soluciones:

set the LD_LIBRARY_PATH environment variable so that it includes the path to the MySQL libraries. 

set static=True in site.cfg for static linking 

reconfigure your system so that the MySQL libraries are on the default loader path. In Linux, you edit /etc/ld.so.conf and run ldconfig. For Solaris, see Linker and Libraries Guide. 

ImportError: ld.so.1: python: fatal: libmtmalloc.so.1: DF_1_NOOPEN tagged object may not be dlopen()'ed 

Esta es una pregunta extraña de Solaris. Qué significa eso? No tengo idea. Sin embargo, cosas como esta pueden suceder si hay algún tipo de desajuste entre compilador o entorno entre Python y MySQL. Por ejemplo, en algunos sistemas comerciales, es posible que tenga algún código compilado con su propio compilador y otras cosas compiladas con GCC. No siempre se combinan. Una forma de encontrar esto es obtener paquetes binarios de diferentes proveedores.

Solución: Reconstruya Python o MySQL (o tal vez ambos) desde la fuente.

ImportError: dlopen(./_mysql.so, 2): Symbol not found: _sprintf$LDBLStub Referenced from: ./_mysql.so Expected in: dynamic lookup 

Este es uno de Mac OS X. parece haber sido una falta de coincidencia compilador, pero esta vez entre dos versiones diferentes de GCC. Parece que casi todas las versiones importantes de GCC modifican el ABI por algún motivo, por lo que vincular el código compilado con GCC-3.3 y GCC-4.0, por ejemplo, puede ser problemático.

+0

-1: Esta pregunta es específicamente sobre ironpython, lo menciono en el título y la primera oración. Su respuesta no hace nada para abordar la situación única de tratar de usar este módulo con ironpython –

1

Mirando el SQLObject código fuente es pura pitón, el código se depende de MySQLdb que se limita a CPython.

Sin embargo, si se modifica el código para usar (http://dev.mysql.com/doc/connector-python/en/index.html) mysql.connector biblioteca que está escrito en Python puro que debe ser capaz de estanblish una conexión a mysql

Nota: Esto mysql.connector no sigue el misma API como MySQLdb y requerirá una considerable cantidad de reescritura a la source code

creo que este puede ser su mejor solución

Cuestiones relacionadas