Sqlalchemy from_statement()找不到列

时间:2014-04-28 15:12:28

标签: python sqlalchemy

我正在关注http://docs.sqlalchemy.org/en/rel_0_9/orm/tutorial.html

中的sqlalchemy教程

然而,我使用MySQL而不是使用SQLite后端。问题是,当我尝试执行文字MySQL语句来从users表中选择一列时,例如

SELECT name from users;

它将失败

NoSuchColumnError: "Could not locate column in row for column 'users.id'"

而做

SELECT * FROM users

工作得很好。 我错过了什么吗?

Users类定义为:

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    fullname = Column(String(50))
    password = Column(String(50))
    def __repr__(self):
        return "<User(name='%s', fullname='%s', password='%s')>" % (self.name, self.fullname, self.password)

会话定义为:

Session = sessionmaker(bind=engine)
session = Session()

我正在尝试

session.query(Users).from_statement('SELECT name from users')

顺便说一句,这个语句在MySQL客户端上运行时运行正常。 我错过了什么或者它是一个错误吗?

1 个答案:

答案 0 :(得分:6)

我会回答自己,以防有人遇到同样的问题。

的语法
session.query(Users).from_statement('SELECT name from users')

错了。它应该是

session.query('name').from_statement('SELECT name from users')

列的列表应该在对query()的调用中。