代码之家  ›  专栏  ›  技术社区  ›  user9074332

Python SQLAlchemy ORM-表反射*不带*约束和索引反射

  •  1
  • user9074332  · 技术社区  · 6 年前

    有没有办法禁用明显默认的索引&约束反射?

    from sqlalchemy import and_, create_engine, MetaData, Table
    from sqlalchemy.orm import sessionmaker
    
    conn_str = f'oracle://{user}:{pswd}@{srvc}'
    engine =  create_engine(conn_str, echo=True)
    Session = sessionmaker(bind=engine)
    meta = MetaData()
    
    my_table = Table('my_table', meta, autoload=True, autoload_with=engine, 
                     schema='my_schema')
    

    echo=True

    谢谢。

    1 回复  |  直到 6 年前
        1
  •  0
  •   user9074332    6 年前

    在反射数据库对象时,似乎没有一种明显的方法来限制隐藏的内容,因此我发现最好的、最有效的方法是按照文档中的描述显式定义映射类,只包含所需的列,而不是所有的列。

    Base = declarative_base()
    
    class Person(Base):
        __tablename__ = 'person'
        __table_args__ = {'schema': 'schema_name'}
    
        person_id = Column(Integer, primary_key=True)
        first_name = Column(String)
        last_name = Column(String)
    

    session.query() 将使用的语法 数据库反射,但节省了访问数据库字典表的大量开销。