【问题标题】:How do I check which fields have indices in an SQLAlchemy table or class?如何检查 SQLAlchemy 表或类中哪些字段具有索引?
【发布时间】: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)

如何以编程方式检查哪些字段有索引,哪些是主键?

【问题讨论】:

标签: python sqlalchemy


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    相关资源
    最近更新 更多