Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Dynamisches Festlegen von __tablename__ für Sharding in SQLAlchemy?

OK, wir haben uns für die benutzerdefinierte SQLAlchemy-Deklaration und nicht für die deklarative entschieden.

Also erstellen wir ein dynamisches Tabellenobjekt wie dieses:

from sqlalchemy import MetaData, Table, Column

def get_table_object(self, md5hash):
    metadata = MetaData()
    table_name = 'table_' + md5hash
    table_object = Table(table_name, metadata,
        Column('Column1', DATE, nullable=False),
        Column('Column2', DATE, nullable=False)
    )
    clear_mappers()
    mapper(ActualTableObject, table_object)
    return ActualTableObject

Dabei ist ActualTableObject die Klassenzuordnung zur Tabelle.