Sqlalchemy from_statement() 找不到列
我正在按照这个SQLAlchemy的教程来学习。
不过,我不是用SQLite,而是用MySQL。问题是,当我尝试执行一个直接的MySQL语句来从用户表中选择一个列时,比如说
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)是这样定义的:
Session = sessionmaker(bind=engine)
session = Session()
我想要执行的是
session.query(Users).from_statement('SELECT name from users')
顺便说一下,这个语句在MySQL客户端上运行得很好。
我是不是漏掉了什么,还是说这是个bug?
1 个回答
14
我自己回答一下,以防有人遇到同样的问题。这里的语法
session.query(Users).from_statement('SELECT name from users')
是错的。应该是
session.query('name').from_statement('SELECT name from users')
列的列表应该放在query()这个函数的调用里面。