DBUtils - a module for useful Database utilities
use DBUtils;
assert_table_defined($dbh,$table_name);
assert_dbh($dbh);
$id = fetch_last_id($dbh,$table_name);
$sql_string = create_insert_sql($dbh,$table_name,@column_names);
$sql_string = create_update_sql($dbh,$table_name, SET=>$array_ref,WHERE=>$string);
$sql_string = create_select_sql($dbh, COLUMNS=>$array_ref, FROM=>$array_ref, WHERE=>$where_string, DISTINCT=>$bool, LIMIT=>$bool, );
$species = fetch_es_species($es_pk);
@ids = fetch_es_ids();
@ids = fetch_user_al_ids($us_fk);
@ids = fetch_am_ids($experiment_set_pk, @array_measurement_types);
$array_ref = fetch_fkey_list($dbh, $table_name, $column_name, $pkey, $rec_level);
$exp_set = fetch_spot_data($es_pk,@am_types);
output_spot_data($file_handle, $experiment_set_pk, @array_measurement_types);
$id = lookup_id($dbh,$table,$attribute,$value,$approx);
$id = lookup_species_id($dbh,$species_name,$approx);
$id = lookup_usf_id($dbh,$usf_name,$approx);
$id = lookup_contact_id($dbh,$contact_name,$approx);
$id = lookup_software_id($dbh,$software_name,$approx);
Helper functions for achieving common DB tasks with a GeneX DB.
create_insert_sql($dbh,$table,\@column_names)
create_insert_sql($dbh,$table,\%col_val_pairs)
prepare()
and
exectute()
methods. In this case the \@columen_name
reference
contains the names and order of the columns we plan to insert data in
$table
.
If invoked with a hash reference of column name/value pairs,
create_insert_sql will return a final SQL string that can be used by
DBI do()
.
Return value: an SQL string that is specific to the driver for $dbh (currently this is only implemented for PostgeSQL).
lookup_usf_id($dbh,$sequence_feature_name,$approx)
If the optional $approx
flag is specified, then lookup_usf_id()
will use wildcarding around $sequenc_feature_name
so the name does not have
to be an exact match.
assert_dbh($dbh)
assert_table_defined($dbh,$table_name)
lookup_contact_id($dbh,$contact_name,$approx)
If the optional $approx
flag is specified, then lookup_contact_id()
will use wildcarding around $contact_name
so the name does not have
to be an exact match.
lookup_software_id($dbh,$software_name,$approx)
If the optional $approx
flag is specified, then lookup_software_id()
will use wildcarding around $software_name
so the name does not have
to be an exact match.
lookup_species_id($dbh,$species_name,$approx)
If the optional $approx
flag is specified, then lookup_species_id()
will use wildcarding around $species_name
so the name does not have
to be an exact match.
lookup_experiment_id($dbh,$experiment_name)
If the optional $approx
flag is specified, then lookup_experiment_id()
will use wildcarding around $experiment_name
so the name does not have
to be an exact match.
lookup_id($dbh,$table,$attribute,$pk_name,$value,$approx)
The optional $approx flag species that approximate mathcing using an SQL 'LIKE' clause should used instead of exact matching using '='.
fetch_last_id($dbh,$table)
check_password($dbh,$user_name,$password)
Return value: On Success: the primary key of the UserSec entry On Failure: undef
fetch_es_ids()
The optional @am_types list is used to filter the arrays to a given type. There is no default value for this parameter.
Return Value: list of ArrayMeasurement ids or undef if none.
fetch_spot_data($es_pk,@am_types)
The optional @am_types list will restrict the retrieval to only arrays of the specified types, the default value of @am_types is ('derived ratio').
Return value: an instance of Bio::Genex::ExperimentSet
Example use:
use Bio::Genex::DBUtils qw(fetch_spot_data, fetch_es_ids) my @es_ids = fetch_es_ids(); foreach my $es_pk (@es_ids) { my $es = fetch_spot_data($es_pk); my @array_list = $es->arraymeasurement_fk(); foreach my $array (@array_list) { my $spot_list_ref = $array->am_spots_fk();
# locate the column for the spot values my @header = shift @{$spot_list_ref}; my $spot_col; my $usf_col; for (my $i=0;$i<scalar @header;$i++) { $spot_col = $i if $header[$i] =~ /spot_value/; $usf_col = $i if $header[$i] =~ /usf_fk/; } die "Couldn't find columns for " . $array->name() unless defined $spot_col && defined $usf_col;
foreach my $spot (@{$spot_list_ref}) { print "$spot->[$usf_col]\t$spot->[$spot_col]"; } } }
The optional @am_types list is used to filter the spot data belonging
to only arrays of the given types. The default value is
('derived ratio')
.
dbh
: a database handle; calling_class
: the name
of the class requesting the data; class_to_fetch
the name of the
table to lookup the data from; column_to_fetch
: the name of foreign
key in class_to_fetch
that refers to calling_class
;
value_to_fetch
: the value of column_to_fetch
to use in the
WHERE
clause.
Control Variables: Setting $Bio::Genex::DBUtils::NO_FETCH_DISTINCT
instructs fetch_fkey_list to not use the DISTINCT
SQL keyword in
the query (the default is to use DISTINCT
. Setting
$Bio::Genex::DBUtils::NO_FETCH_ALL
instructs the method to not set the
fetch_all
parameter when calling new()
on each object (the
default is to use fetch_all
).
fetch_user_al_ids($us_fk)
Return Value: a list of ArrayLayout ids or undef if none.
fetch_es_species($es_pk)
Return value: an instance of class Bio::Genex::Species
.
Jason Stewart (jes@ncgr.org), and Peter Hraber (pth@ncgr.org)
perl(1).