I'm trying to figure out how to use SQLAlchemy for domain models for a 
"sharded" table. I put "sharded" in quotes because it is almost certainly 
not the correct technical term for what I'm trying to do. Let me explain.

I want to create tables with the name "foos_YYYY_MM" where YYYY is the year 
and MM is the month of the last update. Let's say we call the model Foo, 
and it has a "updated_date" column. So say we have a Foo stored in the 
table `foos_2016_01`, then we go get it and update it, it might need to go 
in the table `foos_2016_02` now. Does that make sense?

After googling and playing around with things a bit I have this code:

    class Foo(object):
        def __init__(self, ...)
            self.updated_date = ...
            self.col1 = ...
            ...

    [...]

    def get_foo(updated_date):
        model = 
Table('foo_{date}'.format(date=updated_date.strftime('%Y_%m')),
                      metadata,
                      Column(...),
                      Column(...),
                      Column(...))
        clear_mappers()
        m = mapper(Foo, model)
        m.mapped_table.create(engine, checkfirst=True)
        return Foo

But this is almost certainly wrong because it relies on `clear_mappers()` 
being called, otherwise you get the error "already has a primary mapper 
defined." the second time you call the `get_foo()` function. I'd also like 
to try and use a declarative syntax instead of this classical syntax if 
possible, but I couldn't figure out how to get it to work with a 
declarative base.

Sorry to be kind of vague here, I'm really not sure what the correct 
terminology would be for this kind of concept. I feel like there must be a 
way to do this using SQLAlchemy, but I am struggling to figure out exactly 
how.

Thanks in advance for any help,

Amy

-- 
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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to