簡體   English   中英

從SQLAlchemy中提取表名稱存在查詢

[英]Extract table names from SQLAlchemy exist query

我如何從SQLAlchemy存在語句中提取表名假設我們有以下代碼

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

class Person(Base):
    __tablename__ = 'person'
    id = Column(Integer, primary_key=True)
    name = Column(String(250), nullable=False)

engine = create_engine('mysql://...')
Session = sessionmaker(bind=engine)

conn = engine.connect()
session = Session(bind=conn)
query_exists = session.query(Person).exists()

如何從query_exists中提取表名?

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM