anyway to create a table-like object?

James Stroud jstroud at mbi.ucla.edu
Wed Feb 14 19:21:53 EST 2007


Wensui Liu wrote:
> Dear all,
> 
> is there a way to create a 2-dimension-table-like object such that I
> can reference a whole column directly using something like :
> mytable.column1 ?
> 
> by the way, can python be used for database programming to pull large
> volume data (hundred M or even several Gs) out of large database and
> do data manipulation and reporting ? if yes, how is the speed and
> efficiency ?
> 
> thanks.
> 
> wensui

I have a table class that works like this:

  atable['some_col'] ==> list of values
  atable[some_row_index] ==> list of values
  atable[slice_start:slice_end] ==> new table
  atable[('some_col', 'other_col', 'another_col')] ==> 3 col. table
  atable['some_col', some_row_index] ==> one value
  atable['some_col', slice_start:slice_end] ==> list of values
  atable[('some_col', 'other_col'), some_row_index] ==> list of 2 vals
  atable[('some_col', 'other_col'), slice_start:end]) ==> 2 col. table

As you can see, it has a lot of flexibility, but may not be the ultimate 
in terms of speed (and purists may not like the way __getitem__ returns 
data based on context). It is for people who care about convenience over 
speed and do not adhere to some puritanical ideal about how __getitem__ 
should work. There is little typechecking (in accord with my own brand 
of puritanical philosophy), so be careful if you have ints as column 
headers. The datastructure is implemented as a list of lists (by row) 
and the "keys" (column headings) are a list. So size limitations are 
limited by memory. Theoretically, the __getitem__ (where all the work 
and decisions are done) could be factored out and wrapped around dbi for 
hard-core database usage. This might entail some serious creativity.

It also has some other features, such as returning matches, etc. It is 
not intended, at all, to rival an actual database such as mysql--the 
model is more based on how Joe Users use excel files.

If you are interested, I can send you the module. Beyond actual use in 
my own and my wife's work, there has been little testing.

James



More information about the Python-list mailing list