On 10/1/15 5:56 AM, Pavel S wrote:
Hi,
we use application-level partitioning (but no real partitioning in
mysqld), where new tables are created daily with the same structure,
but different name (suffix).
* mysqld is shared for these components:
* daemon written in C++
o creates new tables every day and fills them with records
* other daemon written in Python:
o periodically scans /information_schema.tables/ for new tables
and creates Table objects, which haven't been initialized before
o the same daemon then processes records from all tables and
computes some statistics on top of them
* daily cronjob drops tables older than _n_ days
_The problem:_
Pythonic daemon has to somehow notice that some tables were dropped
and unload them from Metadata object. Otherwise, it will fail on
ProgrammingError: table does not exit
removal of individual tables is not a supported API feature of the
MetaData object because the problem of resolving foreign key references
to these tables is complicated and error prone.
However, you can just whack an individual Table that is guaranteed to
not be referenced by any other Table objects by removing it from the
dictionary (which requires special tricks as we've had to add checks in
place to prevent people from doing this):
dict.__del__(my_metadata.tables, "mytable")
Also, if you are using any ORM functionality here, ORM classes that
refer to these tables would also have to be dealt with (e.g. class
should be dereferenced and there cannot be any other mappings which
refer to these classes using relationship()).
A better option is likely to use a separate MetaData object for *each*
table. There's no requirement that tables are all present in just one
MetaData collection.
We don't want to establish any messaging between daemons, just to keep
the setup as it is.
Daemon should compare what's in /information_schema/ and what's in
Metadata and remove Table objects. How to do that?
--
You received this message because you are subscribed to the Google
Groups "sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
To post to this group, send email to [email protected]
<mailto:[email protected]>.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.