Python 3.x 在sqlalchemy中获取值列表而不是类
这个问题看起来很简单,但我很难找到关于StackOverflow的现有解决方案 当我运行sqlalchemy命令时,如下所示Python 3.x 在sqlalchemy中获取值列表而不是类,python-3.x,sqlalchemy,flask-sqlalchemy,Python 3.x,Sqlalchemy,Flask Sqlalchemy,这个问题看起来很简单,但我很难找到关于StackOverflow的现有解决方案 当我运行sqlalchemy命令时,如下所示 valid_columns = db.session.query(CrmLabels).filter_by(user_id=client_id).first() 我得到一个不可编辑的CrmLabels对象。如果我打印这个对象,我会得到一个列表 [Convert Source, Convert Medium, Landing Page] 但这是不可容忍的。我希望得到上面
valid_columns = db.session.query(CrmLabels).filter_by(user_id=client_id).first()
我得到一个不可编辑的CrmLabels对象。如果我打印这个对象,我会得到一个列表
[Convert Source, Convert Medium, Landing Page]
但这是不可容忍的。我希望得到上面显示的内容,除了字符串列表
['Convert Source', 'Convert Medium', 'Landing Page']
如何运行将返回此结果的查询?下面的更改应执行此操作:
valid_columns = (
db.session.query(CrmLabels).filter_by(user_id=client_id)
.statement.execute() # just add this
.first()
)
但是,您需要确定列的顺序,并且可以使用valid\u columns.keys()
确保值的顺序符合预期
或者,您可以使用dict(valid_columns.items())创建字典,我不建议这样做,但您可以使用
eval
,但应该避免使用。除此之外,我想不出任何其他方法。请将问题包含在CrmLabels
类的源代码中。可能您只需要类似session.query(CrmLabels.name)
的内容,请不要使用eval
。如果要查询整个表,但作为结果元组而不是映射对象,请使用query(CrmLabels.\uuu table\uuu)
。但我觉得这有点像XY问题。谢谢大家。最后,我使用类属性(例如CrmLabels.status)从表中获取每个值。这并不理想,但很有效,这就是我目前真正需要的。