kajacx
0
Q:

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?).
0

New to Communities?

Join the community