我想通过查看SQLAlchemy session.py
中的代码来从表中选择特定值
def query(self, *entities, **kwargs):
"""Return a new ``Query`` object corresponding to this ``Session``."""
return self._query_cls(entities, self, **kwargs)
似乎作为一个函数参数,它接受一个元组。所以我做的是:
query = ('order', 'location')
columnsStr = 'order, location'
table = 'locations'
sql = "SELECT {0} FROM {1}".format(columnsStr, table)
data = session.query(query).from_statement(sql).all()
它会产生此错误 - InvalidRequestError: SQL expression, column, or mapped entity expected - got '('order', 'location')'
为什么这不适用于元组?
P.S。
如果我改变这些值:
query = 'location'
columnsStr = 'location'
我确实得到了一个结果,但只针对那一列。
答案 0 :(得分:3)
尝试
data = session.query('order', 'location').from_statement(sql).all()
或者,如果你想保留你的元组结构,你可以做这样的事情
data = session.query(*query).from_statement(sql).all()
原因是当你传入一个元组python然后将该元组放入一个元组
>>> x = (1,2,3)
>>> def f(*x):
print x
>>> f(x)
((1, 2, 3),)
>>> f("location", "order")
('location', 'order')
>>>