【发布时间】:2020-05-04 12:40:35
【问题描述】:
这是使用 SQLAlchemy declarative_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),
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 端,也许你可以使用
table_name = my_object.__getattribute__("__tablename__")然后调用indexes = engine.dialect.get_indexes(engine.connect(), table_name)?
标签: python sqlalchemy