SQLAlchemy,能否在一个查询中(使用column.name)得出特定实体的列值?

时间:2018-12-05 23:49:23

标签: python database sqlalchemy

我正在使用Python 3和SQLAlchemy,我的问题是是否有办法在单个查询中(也许使用column.name)获取特定实体的列值(在我的情况下为字符)?

现在我有办法做到这一点。

character = session.query(Character).filter_by(id=1).first()
print(character.level)
>>> 10

我想要做的是这样的事情,其中​​我不知道我想要哪个列值:

character = session.query(Character).filter_by(id=1).first()
for i, column in enumerate(character.__table__.columns):
    if i == 3:
        #Not sure about this query
        someColumnValue = session.query(character).load_only(column.name)
        # Lets say its the level column
        someColumnValue += 1
        session.commit()
        #And the character.level will now be 10 + 1 stored in the database
        print(someColumnValue)
>>> 11

也许现在有办法做到这一点,或者有一种更聪明的方式让我获得结果,或者以其他方式进行迭代。

1 个答案:

答案 0 :(得分:0)

我认为您正在迭代查找sql​​alchemy列,请查看Mapper.attrs

from sqlalchemy import inspect
mapper = inspect(Character)
for column in mapper.attrs:
    print column.key