Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检查SQLAlchemy表或类中哪些字段具有索引?_Python_Sqlalchemy - Fatal编程技术网

Python 如何检查SQLAlchemy表或类中哪些字段具有索引?

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

下面是使用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),
    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