python sqlalchemy db.session use table name as string
# I needed a way to query by referring to the model's tablename. This is what I came up with:
class Model1(db.Model):
__tablename__ = 'table1' # or whatever, doesn't matter
class Model2(db.Model):
__tablename__ = 'table2'
def table_object(table_name):
tables_dict = {table.__tablename__: table for table in db.Model.__subclasses__()}
return tables_dict.get(table_name)
# Then, use it like this:
model_list = ['table1', 'table2']
for model in model_list:
some_var = db.session.query(table_object(table_name=model)).filter_by(name='something').all()
# The important bit is db.Model.__subclasses__() - gives a list of the model classes (objects?).