anyway to create a table-like object?

James Stroud jstroud at mbi.ucla.edu
Wed Feb 14 19:35:48 EST 2007


James Stroud wrote:
> 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

Also, if you want columns as attributes (which may be pretty cool):

   def __getattr__(self, att):
     if att in self.headers:
       return self[att]
     else:
       return self.__getattribute__(att)

James




More information about the Python-list mailing list