Che Perl interfaccia di database devo usare?
Domanda
È CPAN DBI la migliore interfaccia di database da utilizzare in Perl generali per l'utilizzo di database?Ci sono alcune opzioni di meglio?
Soluzione
Se siete solo in cerca di basso livello di accesso al database—si rinnova ogni stringa SQL (facoltativamente con segnaposto e associa i valori) e si esegue la query e restituisce i risultati, allora sì, DBI è la vostra scommessa migliore, di gran lunga.
Se si desidera un maggiore livello di interfaccia (cioè, uno che richiede poco o nessun uso di materie prime di SQL nel codice), poi ci sono diversi Orm (object-relational mapper disponibile per il Perl.Controllare il ORM pagina Perl Fondazione di Perl 5 wiki per ulteriori informazioni e collegamenti.(Se avete bisogno di aiuto per scegliere tra di loro o con domande specifiche, si potrebbe restringere il focus di questa domanda, o forse post di un altro.)
Altri suggerimenti
DBI è il "basso livello" interfaccia tra Perl e un DBMS.È praticamente l'unica scelta realistica per farlo.Paragonabile a JDBC Java.Sarebbe folle (o hanno un utilizzo molto specifico caso) per prendere qualcosa di diverso DBI per voi a basso livello di interfaccia tra Perl e un database.
In cima DBI, ci sono vari object/relational mapper che consentono di lavorare con un database molto più pulito e più facile.
Alcuni dei comune/più popolari sono
Se si è scelto di utilizzare pianura DBI
per un'attività che non ha bisogno di un ORM, ho
consigliamo vivamente di dare un'occhiata a DBIx::Semplice.
Non è una sostituzione, ma molto ben progettato API in cima DBI
che rende le cose semplici e complesse le cose possibili, senza
perdere la flessibilità di DBI
.
Hai mai trovato dovevano guardare a quanto pare le cose semplici in DBI
la documentazione, come ottenere i risultati di una query come un arrayref (righe)
di hash (colonne e i loro valori)?Con DBIx::Simple
questo è molto semplice:
# 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!
Date un'occhiata al esempi per ulteriori.Inoltre, l'integrazione con SQL::Astratto rende semplice query di una brezza.Si utilizza in tutti il mio codice dove avrei usato DBI
prima, e
Io non sto guardando indietro.
Vale la pena sottolineare che la stragrande maggioranza di "livello superiore" interfacce (come SQL::Astratto) e (DBIx::Semplice) utilizzare DBI stesso, quando in realtà l'esecuzione di query.DBI è praticamente lo standard accettato metodo per la connessione al database in Perl.
Se si desidera lavorare con gli oggetti (con l'introspezione!), date un'occhiata a Fey::ORM che implementa ORM basato su Moose.E 'anche molto SQL sintassi in modo che si adatta il mio RDBMS a base di cervello un po' meglio di alcuni altri ORM quadri.
Guarda Classe::DBI come bene.
A mio parere, DBI è una scelta molto buona.Ho usato DBD::mysql attivamente e trovato ad essere davvero una buona soluzione.
Usiamo il modulo DBI in tutti i nostri progetti.Molte volte possiamo creare un pacchetto personalizzato su di esso per l'applicazione specifica, ma sotto che è il nucleo DBI modulo.E spesso è solo più facile da utilizzare il modulo DBI funzioni direttamente.
DBI è grande, ma la qualità del DBD moduli può variare.Sono stato morso da una 'funzione' in una delle versioni di DBD:pg.È piaciuto per caricare i dati completi del vostro risultato in memoria, piuttosto che interate su di esso con i cursori.
Come al solito - Avvertimento programmor.
DBI rocce!ma per una corretta completo ORM che è veloce andare per DBIx::Class per tutto il tempo.
In sostanza, si dovrebbe essere abituati ad usare solo DBI in primo luogo.