The Perl Advent Calendar needs more articles for 2022. Submit your idea today!


DBIx::SQLEngine::Docs::Related - Survey of DBI Wrappers



Several other CPAN modules provide a similar wrapper around DBI for purposes of simplification, abstraction, or portability.


I've commented on a few of these below, but please remember that these notes were written some time ago and may be somewhat out of date, and many modules have been omitted.


Most of these provide simple wrappers around DBI's connect, prepare, and fetch methods, but do not appear to support any kind of cross-DBMS portability mechanism. See DBIx::Abstract, DBIx::Broker, DBIx::Simple, and Sql::Simple for examples of this group. See also DBIx::AbstractLite, DBIx::Schema, DBIx::Wrap, and DBIx::YAWM. Single-platform solutions like MySQL::Easy are also available.

Some provide only SQL generation mechanisms. See SQL::Abstract.

Some provide at least partial cross-DBMS support via specialized subclasses for the DBDs they support. See DBIx::SearchBuilder, DBIx::Easy, and DBIx::DWIW for examples of this group.

The DBIx::Recordset framework provides similar functionality, including a substantial library of cross-DBMS compatibilty information. It also includes a tied-hash interface that allows automatic updates on retrieved rows. See DBIx::RecordSet, DBIx::Database, and DBIx::Compat.

The Rosetta framework provides a higher-level interface with a great deal of portability, including supports non-DBI and non-SQL datasources; see Rosetta for details.

The Alzabo framework provides similar functionality, including DBMS-specific SQL generation, as part of an RDBMS-OO mapper; see Alzabo::Driver and Alzabo::SQLMaker.

There are signs of ongoing development in the Class::DBI framework to support cross-DBMS portability, so check CPAN for the latest in this area.

The SQL::AnyDBD is new addition which uses DBIx::AnyDBD.

Some packages focus on storing libraries of pre-defined named queries. See SQL::Catalog, SQL::Library, DBIx::PhraseBook, Class::Phrasebook::SQL, and DBIx::Librarian.

Some packages focus on managing database schema information. See DBIx::DataSource, DBIx::Admin::TableInfo, DBIx::SystemCatalog.

For more information about the object mapping modules, see the Poop-Group comparison page at

Feature Matrix

Please note that much of this information was collected just from scanning documentation, and may be incorrect or out of date. (Corrections welcome!)

  DBI Wrapper     -- Maintains connection to DBI handle.
  One Call Query  -- Provides combined prepare/fetch/finish method.
  Data-driven SQL -- Generates queries from Perl-ish arguments.
  Schema Access   -- Detect or create tables and other structures.
  Named Configs   -- Manage connection params and query definitions.
  Portability     -- Consistent way of performing queries across platforms.
  Object Mapping  -- Treat rows of data as objects or tied references.


 __PACKAGE__            DBIWrap OneCall DataSQL NameCfg Schema  Portble ObjectM
 DBIx::Abstract           Y       Y       Y       -       -       -       -
 DBIx::AbstractLite       Y       -       Y       -       -       -       -
 DBIx::Broker             Y       Y       Y       -       -       -       -
 DBIx::Browse             Y       Y       Y       -       -       -       -
 DBIx::DWIW               Y       Y       -       -       -       Y/-     -
 DBIx::Easy               Y       Y       Y       -       -       Y/-     -
 DBIx::Schema             Y       Y       Y       -       -       -       -
 DBIx::Simple             Y       Y       -       -       -       -       -
 DBIx::Wrap               Y       Y       Y       -       -       -       -
 DBIx::YAWM               Y       Y       Y       -       -       -       -
 MySQL::Easy              Y       Y       -       -       -       -       -
 SQL::AnyDBD/DBIx::AnyDBD Y       -       Y       -       -       Y       -
 Sql::Simple              Y       Y       Y       -       -       -       -
 DBIx::Librarian          Y       -       -       Y       -       -       -
 DBIx::PhraseBook         Y       Y       Y       Y/-     -       -       -
 DBIx::SearchProfiles     Y       Y       Y       Y       -       -       -
 SQL::Catalog             Y       -       -       Y       -       -       -
 Class::Phrasebook::SQL   -       -       -       Y       -       -       -       
 SQL::Abstract            -       -       Y       -       -       -       -
 SQL::Generator           -       -       Y       Y       -       -
 SQL::Library             -       -       -       Y       -       ?       -
 DBIx::Admin::TableInfo   Y       -       -       -       Y       -       -
 DBIx::DataSource         -       -       -       -       Y       Y       -
 DBIx::SystemCatalog      Y       -       -       -       Y       Y       -
 DBIx::RecordSet/Compat   Y       ?       Y       -       Y       Y       tie
 Tie::DBI                 Y       Y       -       -       -       -       tie
 Tie::RDBM/::Cached       Y       Y       -       -       Y/-     -       tie
 Tie::Table               Y       Y       -       -       -       -       tie

 Alzabo                   Y       Y       Y       -?      Y       Y       Y
 Class::DBI/Ima::DBI      Y       Y       Y       Y?      ?       Y       Y
 Class::Tables            Y       Y       Y/-     -       Y       Y       Y
 DBIx::SearchBuilder      Y       Y       Y       -       -       Y       Y
 MKDoc::SQL               Y       Y       Y       -?      ?       Y/-     Y
 Rosetta/SQL::Routine     Y       Y       Y       Y       Y       Y       -
 SPOPS                    Y       Y       Y       -       Y       Y       Y
 Tangram                  Y       Y       Y       -       Y?      Y       Y
 __This Module__
 DBIx::SQLEngine          Y       Y       Y       Y       Y       Y       Y

                        DBIWrap OneCall DataSQL NameCfg Schema  Portble ObjectM

Items marked Y/- seem to have only partial support for the feature. I've included a question mark for the cases I was least certain about.


See DBIx::SQLEngine for module interface and developer documentation.

See DBIx::SQLEngine::Docs::ReadMe for general information about this distribution, including installation and license information.