Sqlalchemy from_statement()找不到列

fen*_*oxp 4 python sqlalchemy

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

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

SELECT name from users;
Run Code Online (Sandbox Code Playgroud)

它会失败

NoSuchColumnError: "Could not locate column in row for column 'users.id'"
Run Code Online (Sandbox Code Playgroud)

而做一个

SELECT * FROM users
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

会话定义为:

Session = sessionmaker(bind=engine)
session = Session()
Run Code Online (Sandbox Code Playgroud)

而我正在努力做到

session.query(Users).from_statement('SELECT name from users')
Run Code Online (Sandbox Code Playgroud)

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

fen*_*oxp 7

如果有人遇到同样的问题,我会自己回答.的语法

session.query(Users).from_statement('SELECT name from users')
Run Code Online (Sandbox Code Playgroud)

是错的.它应该是

session.query('name').from_statement('SELECT name from users')
Run Code Online (Sandbox Code Playgroud)

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