如何列出涉及SQLAlchemy語句的所有表格? 讓我們假設有下面的查詢如何列出涉及SQLAlchemy語句的所有表格
query = session.query(Address).filter(Address.person == person)
怎麼能列出了在這種情況下使用該查詢 表:人,地址
如何列出涉及SQLAlchemy語句的所有表格? 讓我們假設有下面的查詢如何列出涉及SQLAlchemy語句的所有表格
query = session.query(Address).filter(Address.person == person)
怎麼能列出了在這種情況下使用該查詢 表:人,地址
RMN答案是好的,但它不能處理所有的情況下,子查詢,delete語句,存在報表等
這裏是提取所有表
from sqlalchemy.sql.visitors import ClauseVisitor
from sqlalchemy import Table
def extract_tables(sql_stmt):
tables = []
visitor = ClauseVisitor()
cluase_iter = visitor.iterate(elem)
for e in cluase_iter:
if isinstance(e, Table):
tables.append(e)
if isinstance(e, (ValuesBase, UpdateBase)):
tables.append(e.table)
return set(tables)
你可以從locate_all_froms得到所有的表,這樣的事情
from sqlalchemy import Table
from sqlalchemy.sql.selectable import Alias
tables = set()
for f in query.statement.locate_all_froms():
if isinstance(f, Table):
tables.add(f)
elif isinstance(f, Alias):
tables.add(f.element)
謝謝隊友,我怎樣才能處理插入和刪除子查詢? – sami
您的查詢(可能)不打算實際使用的表底層的人,但只是比較'address.person_id =一般方式:person_id'。如果你在問題中包含你的模型,它會有所幫助。 –
@Ijaja感謝隊友 – sami