如何从SQlAlchemy ORM会话查询预先存在的表?

2024-10-01 09:40:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用SQLAlchemy来进行一些数据处理和创建一些表。我从用Declarative BaseORMTable定义的表orm_table加载数据,因此可以用session.query(ORMTable).all()语句查询数据库。在

但是,我还需要查询另一个表non_orm_table,该表已经存在于数据库中,并且没有在orm中定义。如何在同一会话中查询此表?我没有一个与之相关的类,所以想知道这种情况下的标准做法是什么?在


Tags: 数据base定义sqlalchemysessionormtable语句
1条回答
网友
1楼 · 发布于 2024-10-01 09:40:57

下面是制作它的代码片段:

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('<db_connection_string>', echo=True)
Base = declarative_base(engine)


class NonOrmTable(Base):
    """
    eg. fields: id, title
    """
    __tablename__ = 'non_orm_table'
    __table_args__ = {'autoload': True}


def loadSession():
    """"""
    metadata = Base.metadata
    Session = sessionmaker(bind=engine)
    session = Session()
    return session


if __name__ == "__main__":
    session = loadSession()
    res = session.query(NonOrmTable).all()
    print res[1].title

关键是使用SqlAlchemy’s autoload属性。它将把现有的表字段名动态映射到类。在

我希望有帮助。在

相关问题 更多 >