Python 如何检查SQLAlchemy表或类中哪些字段具有索引?
下面是使用SQLAlchemy声明性_base的表定义:Python 如何检查SQLAlchemy表或类中哪些字段具有索引?,python,sqlalchemy,Python,Sqlalchemy,下面是使用SQLAlchemy声明性_base的表定义: t_measures_voyage_crude = Table( 'measures_voyage_crude', metadata, Column('tanker', String(255)), Column('load_point', Text), Column('load_port', String(255)), Column('load_country', NullType), Co
t_measures_voyage_crude = Table(
'measures_voyage_crude', metadata,
Column('tanker', String(255)),
Column('load_point', Text),
Column('load_port', String(255)),
Column('load_country', NullType),
Column('load_region', String(255)),
Column('date_depart', Date),
Column('offtake_point', Text),
Column('offtake_port', String(255)),
Column('offtake_country', NullType),
Column('offtake_region', String(255)),
Column('date_arrive', Date),
Column('grade', Text),
Column('bbls', BigInteger),
Column('row_num', Integer, index=True),
Column('date_num', Integer, index=True),
Column('stat_num', Integer, index=True),
schema='numbergo'
)
它有三个索引字段,但如果变量中有表对象,如何列出这些有索引的列
类似地,对于一个类,可以这样说:
class MasterBpd(Base):
__tablename__ = 'master_bpd'
__table_args__ = {'schema': 'numbergo'}
date = Column(Date, primary_key=True)
bpd_imp_yr = Column(Integer)
bpd_imp_mo = Column(Integer)
bpd_imp_wk = Column(Integer)
bpd_dom_yr = Column(Integer)
bpd_dom_mo = Column(Integer)
bpd_dom_wk = Column(Integer)
row_num = Column(BigInteger, nullable=False, index=True)
date_num = Column(BigInteger, nullable=False, index=True)
如何以编程方式检查哪些字段有索引,哪些是主键?对于ORM端,也许您可以使用
表名=我的对象。
然后调用索引=引擎.方言.获取索引(引擎.连接(),表名)
?我认为,至少应该指出正确的方向。这些也可能有助于/给出想法:,
for col in MasterBpd.__table__.columns:
print(col.index) # True if this field has index, None otherwise
print(col.primary_key) # True if is primary key, False otherwise