NAME
Pg::Simple - simple OO interface to PostgreSQL
SYNOPSIS
use Pg::Simple;
my $db = new Pg::Simple;
$db->connect( { DB => 'spectral' } );
my $db = new Pg::Simple( { DB => 'spectral' } );
$db->execute( SQL command or query ) or die;
while ( $db->fetch( \$field1, \$field2 ) )
{
print "$field1 $field2\n"
}
# or
while ( $hash = $db->fetchhash and keys %$hash )
{
print $hash->{some_key};
}
$db->finish;
DESCRIPTION
Pg::Simple is a very simple interface to PostgreSQL. It is patterned after the DBI interface. Why not use the DBI interface instead? The main reason is that it does not yet support cursors. This module does. When the DBI Postgres interface supports cursors, one should use that instead.
This module is designed primarily to ease reading data from a database. All statements are executed within a transaction. Normally the AutoCommit
flag is set, meaning that after each execution of the do or execute method, the backend is sent a commit
directive. If AutoCursor
is set, execute will not perform a commit, as it would destroy the cursor.
Usually one uses the do method for directives which do not return any data. The execute and finish pair should be used when data is to be returned. The main difference is that execute will create a cursor if AutoCursor
is set, while do won't. finish is required to close the cursor.
Object action methods
- new [ \%attr ]
-
This method creates a new Pg::Simple object. It returns
undef
upon error. The optional hash of attributes may include any of the following:- AutoCursor
-
If set, the execute method always creates a cursor before sending the command to the backend. This defaults to on.
- AutoCommit
-
If set, a
commit
directive will be sent to the backend after each do is performed. In order not to abort selections performed via execute, acommit
directive will not be sent to the backend by execute ifAutoCursor
is set. It will be sent by the finish method. If not set, use the commit method to commit any changes. There is no need to start a new transaction; that is done automatically. - RaiseError
-
If set, errors will result in an exception being thrown ( via croak), rather. If not set, errors will result in a message being printed to
STDERR
and an error value returned to the caller. It defaults to on. - Verbose
-
If set, Pg::Simple will say a few things about what it is doing (to STDERR).
- NFetch
-
The number of tuples to fetch from the cursor at once. This defaults to 1000.
- Name
-
A symbolic name to assign to the connection. This is used to differentiate output when
Verbose
is set. - Trace
-
If set (to a stream glob, i.e.
\*STDERR
), the underlyingPg
interface will send debugging information to that stream. Defaults to off. - DB
-
The name of the database to which to connect. If this is set, Pg::Simple will attempt to make a connection. Alternatively, see the connect method.
- Host
-
The host to which to connect. This defaults to the value of the
PGHOST
environmental variable, if that exists, else the undefined value. - Port
-
The port to which to connect. This defaults to the value of the
PGPORT
environmental variable, if that exists, else5432
. - User
-
The database user id.
- Password
-
The password to pass to the backend. Required only if the database requires password authentication. If not specified, the value of the
PGPASSWORD
environmental variable is used.
- connect([\%attr])
-
This method will connect to a database. It takes an optional hash which may contain the following attributes:
- DB
-
The name of the database to which to connect. If this is set, Pg::Simple will attempt to make a connection. Alternatively, see the connect method.
- Host
-
The host to which to connect. This defaults to the value of the
PGHOST
environmental variable, if that exists, else the undefined value. - Port
-
The port to which to connect. This defaults to the value of the
PGPORT
environmental variable, if that exists, else5432
. - User
-
The database user id.
- Password
-
The password to pass to the backend. Required only if the database requires password authentication. If not specified, the value of the
PGPASSWORD
environmental variable is used.
It returns
undef
upon error, else something else. - execute( command [, \%attr] )
-
This method will pass a command or query to the backend. It may be passed a hash containing the following attributes:
- AutoCursor
-
If set, the execute method always creates a cursor before sending the command to the backend. This defaults to on.
- RaiseError
-
If set, errors will result in an exception being thrown ( via croak), rather. If not set, errors will result in a message being printed to
STDERR
and an error value returned to the caller. It defaults to on.
The attributes apply to this method call only.
It returns
undef
upon error. - do( command [, \%attr] )
-
This method sends the command to the backend. It does not create a cursor. It may be passed a hash containing the following attributes:
- RaiseError
-
If set, errors will result in an exception being thrown ( via croak), rather. If not set, errors will result in a message being printed to
STDERR
and an error value returned to the caller. It defaults to on.
The attributes apply to this method call only.
It returns
undef
upon error. - ntuples
-
The number of tuples returned by the last query. It returns -1 if it can't access that information.
- fetch( \$field1, \$field2, ... )
-
Returns the next tuple of data generated by a previous call to execute. If the
AutoCursor
attribute was set, it will internally fetchNFetch
tuples at a time. It stores the returned fields in the scalars referenced by the passed arguments. It is an error if there are fewer passed references than fields requested by the select.It returns 0 if there are no more tuples,
undef
upon error. - fetch_hashref
-
$hash = $db->fetch_hasherf
Returns the next tuple of data generated by a previous call to execute. If the
AutoCursor
attribute was set, it will internally fetchNFetch
tuples at a time. It returns the row as a hashref.It returns an empty hash if there are no more tuples,
undef
upon error. - commit
-
This should be called to commit any changes to the database.
- abort
-
This should be called to abort the current transaction
- finish
-
This should be called after all fetchs have been completed for a select statement. It closes the cursor (if
AutoCursor
was specified).
LICENSE
This software is released under the GNU General Public License. You may find a copy at
http://www.fsf.org/copyleft/gpl.html
AUTHOR
Diab Jerius ( djerius@cpan.org )