Question

Est CPAN DBI la meilleure interface de base de données à utiliser en Perl pour une utilisation générale des bases de données ?Existe-t-il de meilleures options ?

Était-ce utile?

La solution

Si vous recherchez simplement un accès à la base de données de bas niveau (vous lui fournissez n'importe quelle chaîne SQL (éventuellement avec des espaces réservés et des valeurs de liaison) et il exécute votre requête et vous renvoie les résultats), alors oui, DBI est de loin votre meilleur pari.

Si vous souhaitez une interface de niveau supérieur (c'est-à-dire une interface qui nécessite peu ou pas d'utilisation de SQL brut dans votre code), il existe plusieurs ORM (mappeurs relationnels-objet) disponible pour Perl.Vérifiez ORM sur le wiki Perl 5 de la Fondation Perl pour plus d'informations et de liens.(Si vous avez besoin d'aide pour choisir parmi eux ou si vous avez des questions spécifiques, vous pouvez affiner la portée de cette question ou peut-être en publier une autre.)

Autres conseils

DBI est l'interface "bas niveau" entre Perl et un SGBD.C’est à peu près le seul choix réaliste pour y parvenir.Comparable à JDBC en Java.Vous seriez fou (ou auriez un cas d'utilisation très spécifique) de choisir autre chose que DBI pour votre interface de bas niveau entre Perl et une base de données.

En plus de DBI, il existe divers mappeurs objet/relationnels qui rendent le travail avec une base de données beaucoup plus facile et plus propre.

Certains des plus courants/plus populaires sont

Si vous choisissez d'utiliser plain DBI Pour une tâche qui n'a pas besoin d'un ORM, je vous suggère fortement de jeter un œil à DBIx : Simple.

Ce n'est pas un remplacement, mais une API très bien conçue en plus de DBICela rend les choses simples et complexes possibles, sans perdre la flexibilation de DBI.

Avez-vous déjà découvert que vous deviez rechercher des choses apparemment simples dans le DBIDocumentation, comme obtenir les résultats d'une requête en tant que ArrayRef (lignes) de hachages (colonnes et leurs valeurs)?Avec DBIx::Simple c'est simple :

# 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!

Jetez un oeil à exemples pour plus.De plus, l'intégration avec SQL ::Résumé facilite les requêtes simples.Il l'utilise dans tout mon code là où j'aurais utilisé DBI avant, et je ne regarde pas en arrière.

Il convient de souligner que la grande majorité des interfaces "de niveau supérieur" (comme SQL::Abstract) et (DBIx::Simple) utilisent DBI lui-même lors de l'exécution réelle des requêtes.DBI est à peu près la méthode standard acceptée pour la connexion à une base de données en Perl.

Si vous souhaitez travailler avec des objets (avec introspection !), jetez un œil à Fey::ORM qui implémente ORM basé sur Moose.Il a également une syntaxe très proche de celle de SQL, il s'adapte donc un peu mieux à mon cerveau basé sur un SGBDR que certains autres frameworks ORM.

Jettes un coup d'oeil à Classe ::DBI aussi.

À mon avis, DBI est un très bon choix.J'ai utilisé activement DBD::mysql et j'ai trouvé que c'était une très bonne solution.

Nous utilisons également le module DBI dans tous nos projets.Souvent, nous construisons un package personnalisé par-dessus pour l'application spécifique, mais en dessous se trouve le module DBI de base.Et souvent, il est simplement plus simple d’utiliser directement les fonctions du module DBI.

DBI est génial, mais la qualité des modules DBD peut varier.J'ai été mordu par une « fonctionnalité » dans l'une des versions de DBD:pg.Il aimait charger toutes les données de votre résultat en mémoire, plutôt que d'interagir dessus avec des curseurs.

Comme d'habitude - Programmeur Caveat.

DBI est génial !mais pour un ORM complet et rapide, optez pour DBIx::Class tout le temps.

Fondamentalement, vous devez d’abord être habitué à utiliser uniquement DBI.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top