Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to get the table name from a sqlalchemy query

Tags:

sqlalchemy

I've read through the query docs and don't see anywhere if there is a way to get the tablename from a query-- e.g. if I have q = query(Users), can I get Users back out from q?

like image 634
Colleen Avatar asked Oct 05 '22 06:10

Colleen


1 Answers

Please note that event simple query like yours may involve other table then Users too in case when they are related. So you'll need to iterate over it.

The following should do what you need .selectable.locate_all_froms():

for t in query.selectable.locate_all_froms():
    print repr(t)
    print "table name: %s " % t.name

Will result in something like that:

>>>Table('order', MetaData(bind=None), Column('id', Integer(), table=<order>, primary_key=True, nullable=False, default=Sequence('order_seq', metadata=MetaData(bind=None))), Column('name', String(length=127), table=<order>), schema=None)
>>>table name: order

This should work for query build from Mapped object and also for query build from Table object.

like image 63
vvladymyrov Avatar answered Oct 11 '22 23:10

vvladymyrov