Q:

Is the only way to add a column in PyTables to create a new table and copy? 

I am searching for a persistent data storage solution that can handle heterogenous data stored on disk.   PyTables seems like an obvious choice, but the only information I can find on how to append new columns is a tutorial example.   The tutorial has the user create a new table with added column, copy the old table into the new table, and finally delete the old table.   This seems like a huge pain.   Is this how it has to be done? 
If so, what are better alternatives for storing mixed data on disk that can accommodate new columns with relative ease?   I have looked at sqlite3 as well and the column options seem rather limited there, too. 

A:

Yes, you must create a new table and copy the original data.   This is because Tables are a dense format.   This gives it a huge performance benefits but one of the costs is that adding new columns is somewhat expensive. 