Hi Cody,
Please, always use the PyTables mailing list so that other people would be
able to help you too. Thanks!
A Thursday 21 May 2009 19:13:27 escriguéreu:
> Hi Fracesc,
>
> Sorry to bother you, but I have a question that I could not answer using
> the documentation and I hope you can.
>
> I am trying to append data to a table with a nested data structure. My
> table is structured something like this (except with more nested types):
>
> class Specimen(IsDescription):
> idnumber = Int64Col()
> species = StringCol(64)
> collector = StringCol(64)
> colnum = StringCol(16)
> colyear = UInt16Col()
> notes = StringCol(256)
>
> class Flower(IsDescription):
> idnumber = Int64Col()
> obj_id = Int16Col()
> nstamens = Int8Col()
> nstyles = Int8Col()
> notes = StringCol(256)
>
> Creating the table and entering the fields in the specimen table is no
> problem. I have done that, so my table now has lots of specimens. Now I
> want to go back and append rows representing the flower data onto each
> specimen. Each specimen has numerous flowers, so I need a way to append the
> rows, instead of just updating or modifying them. I have a lot of flower
> (and other structural) measurements, so I wanted to write a script to do
> this automatically
>
> This is where I'm stuck. If I use a row iterator to find the appropriate
> specimen for each flower, I can't append rows to the table. I can use the
> iterator to get the row id for the correct specimen (or use getWhereList),
> but even with the row id I can't seem to find any methods that allow me to
> append rows *within* the table's nested datastructures; I can only append
> to the end of the table. I can access and modify the nested fields using
> the PyTables naming schema (e.g. specimens/Flower/...) but I haven't
> figured out how this would allow me to add data for more than one flower
> for each specimen, because every modify or update call just overwrites the
> last.
>
> And I missing something? I feel like either a) there is some simple
> solution to this problem that I have overlooked, or b) I am making some
> incorrect assumptions about what is possible in this architeture and
> therefore a solution will require a completely different approach.
Well, I think you are confusing concepts, yes. A nested table is made of rows
with nested *fields*, which is a different concept than genuine nested
*tables*. So, whenever you want to add info to a nested table, you have to
add an entire row, filling *all* the necessary fields. I agree that the
'nested table' term used in PyTables' manual can be a bit misleading, but
that's the name we've been using for years, and I don't think this is going to
change.
If what you need is a table made of genuine nested tables, a node hierarchy
would fit better for your uses. For example:
/Specimens (Group)
Specimen (Table)
Flowers (Group)
Flower (Table)
where you have defined a 'Specimens' Group that contains a 'Specimen' Table
specifying the different properties of your specimens. Inside the 'Specimens'
group, you also have the 'Flowers' Group that follows a similar structure.
Also, you can add other 'Flowers' Group siblings for other categories.
Hope that helps,
>
> I would be very appreciative if you could help clarify how I might overcome
> this problem!
>
> Thanks,
>
> Cody Hinchliff
> PhD Candidate
> Washington State University
> Pullman, WA 99164-4236
--
Francesc Alted
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com
_______________________________________________
Pytables-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pytables-users