perl dbi cpan

perl dbi mysql



¿Qué interfaz de la base de datos Perl debería usar? (11)

Eche un vistazo a Class :: DBI también.

¿ CPAN DBI es la mejor interfaz de base de datos para usar en Perl para el uso general de la base de datos? ¿Hay algunas mejores opciones?


En mi opinión, DBI es una muy buena opción. He usado DBD :: mysql activamente y he encontrado que es una muy buena solución.


También utilizamos el módulo DBI en todos nuestros proyectos. Muchas veces creamos un paquete personalizado además de la aplicación específica, pero debajo está el módulo central de DBI. Y a menudo es simplemente más fácil usar las funciones del módulo DBI directamente.


DBI es genial, pero la calidad de los módulos DBD puede variar. Fui mordido por una ''característica'' en una de las versiones de DBD: pg. Le gustaba cargar los datos completos de su resultado en la memoria, en lugar de analizarlos con los cursores.

Como de costumbre - Caveat programmor.


Si desea trabajar con objetos (¡con introspección!), Eche un vistazo a Fey :: ORM que implementa ORM basado en Moose. También tiene una sintaxis similar a la de SQL, por lo que encaja mejor en mi cerebro basado en RDBMS que algunos de otros marcos ORM.


DBI rocas! pero para un ORM completo con todas las funciones que sea rápido, vaya a DBIx :: Class todo el tiempo.


Vale la pena señalar que la gran mayoría de las interfaces de "nivel superior" (como SQL :: Resumen) y (DBIx :: Simple) usan DBI en sí cuando realmente realizan las consultas. DBI es prácticamente el método estándar aceptado para la conexión de bases de datos en Perl.


Si elige usar DBI simple para una tarea que no necesita un ORM, le sugiero que eche un vistazo a DBIx :: Simple .

No es un reemplazo, sino una API muy bien diseñada sobre DBI que hace que las cosas simples sean simples y complejas, sin perder la flexibilidad de DBI .

¿Alguna vez descubrió que tenía que buscar cosas aparentemente simples en la documentación de DBI , como obtener los resultados de una consulta como un arrayref (filas) de hashes (columnas y sus valores)? Con DBIx::Simple esto es sencillo:

# DBI my $rows = $dbh->selectall_arrayref($sql, { Slice => {} }); # tell it we want "hashes" (yuck!) ^^^^ # DBIx::Simple my $rows = $db->query($sql)->hashes; # does the same as the above code underneath!

Echa un vistazo a los ejemplos para más. Además, la integración con SQL :: Abstract hace que las consultas simples sean muy sencillas. Lo uso en todo mi código donde habría usado DBI antes, y no estoy mirando hacia atrás.


DBI es la interfaz de "bajo nivel" entre Perl y un DBMS. Es prácticamente la única opción realista para hacerlo. Comparable a JDBC en Java. Estaría loco (o tiene un caso de uso muy específico) para elegir cualquier cosa que no sea DBI para su interfaz de bajo nivel entre Perl y una base de datos.

Además de DBI, hay varios mapeadores de objetos / relacionales que hacen que trabajar con una base de datos sea mucho más fácil y más limpio.

Algunos de los más comunes / más populares son


Básicamente, debería estar acostumbrado a usar solo DBI en primer lugar.


Si solo busca acceso de base de datos de bajo nivel, lo alimenta con cualquier cadena SQL (opcionalmente con marcadores de posición y valores de vinculación) y ejecuta su consulta y le devuelve los resultados, entonces sí, DBI es su mejor opción. con mucho.

Si desea una interfaz de nivel superior (es decir, una que requiera poco o ningún uso de SQL sin formato en su código), entonces hay varios ORM ( correlacionadores relacionales de objetos ) disponibles para Perl. Visite la página de ORM en la wiki Perl 5 de Perl Foundation para obtener más información y enlaces. (Si desea ayuda para elegir entre ellos o tiene preguntas específicas, puede limitar el enfoque de esta pregunta o quizás publicar otra).