如何使用sqlalchemy从查询返回行?

2024-06-16 12:00:24 发布

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

使用我当前的代码,我可以返回一个包含给定表(服务器、端口、用户和环境)的所有数据的字典,但是我如何才能只返回,例如,只返回user和environment?在

engine_str = con_string.format(
    login=login, passwd=pwd, hostname=hostname, port=db_port, db=db_name
)

try:
    engine = sqlalchemy.create_engine(engine_str, echo=False)
    session = sessionmaker(bind=engine)
    connection = engine.connect()
    session = session(bind=connection)
    Base = declarative_base()
except exc.SQLAlchemyError:
    raise

def select_data(server, trigger_name):
    _t = Table('trigger_details', Base.metadata, autoload_with=engine)
    try:
        stm = session.query(_t).filter_by(
            server=server, trigger_name=trigger_name
        )
        column = [c["name"] for c in stm.column_descriptions]
        return [dict(zip(column, row)) for row in stm.all()]
    finally:
        session.close()

Tags: namedbserverbindportsessionlogincolumn
1条回答
网友
1楼 · 发布于 2024-06-16 12:00:24

解决方法:

engine_str = con_string.format(
    login=login, passwd=pwd, hostname=hostname, port=db_port, db=db_name
)

try:
    engine = sqlalchemy.create_engine(engine_str, echo=False)
    session = sessionmaker(bind=engine)
    connection = engine.connect()
    session = session(bind=connection)
    Base = declarative_base()
except exc.SQLAlchemyError:
    raise

def select_data(server, trigger_name):
    _t = Table('trigger_details', Base.metadata, autoload_with=engine)
    try:
        stm = session.query(_t.c.user, _t.c.environment).filter(
            server == server, trigger_name == trigger_name
        )
        column = [c["name"] for c in stm.column_descriptions]
        return [dict(zip(column, row)) for row in stm.all()]
    finally:
        session.close()

相关问题 更多 >