我正在使用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
也许现在有办法做到这一点,或者有一种更聪明的方式让我获得结果,或者以其他方式进行迭代。
答案 0 :(得分:0)
我认为您正在迭代查找sqlalchemy列,请查看Mapper.attrs
from sqlalchemy import inspect
mapper = inspect(Character)
for column in mapper.attrs:
print column.key