我正在关注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客户端上运行时运行正常。 我错过了什么或者它是一个错误吗?
答案 0 :(得分:6)
我会回答自己,以防有人遇到同样的问题。
的语法session.query(Users).from_statement('SELECT name from users')
错了。它应该是
session.query('name').from_statement('SELECT name from users')
列的列表应该在对query()的调用中。