我现在知道如何查询模型。假设有一个Question
模型:
class Question(Base):
__tablename__ = "questions"
id=Column(...)
user_id=Column(...)
...
现在,我可以这样做:
question = Session.query(Question).filter_by(user_id=123).one()
但是,现在,我有一张桌子(不是模特)questions
:
questions = Table('questions', Base.metadata,
Column(id, ...),
Column(user_id, ...),
....)
如何查询它与我对模型的处理方式?
Session.query(questions).filter_by(user_id=123).one()
这将报告错误:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "E:\Python27\lib\site-packages\sqlalchemy-0.6.3-py2.7.egg\sqlalchemy\orm\query.py", line 851, in filter_by
for key, value in kwargs.iteritems()]
File "E:\Python27\lib\site-packages\sqlalchemy-0.6.3-py2.7.egg\sqlalchemy\orm\util.py", line 567, in _entity_descriptor
desc = entity.class_manager[key]
AttributeError: 'NoneType' object has no attribute 'class_manager'
可是:
Session.query(questions).all()
没问题。
filter_by
仅适用于模特吗?我如何查询表格?
答案 0 :(得分:24)
我认为这是Session.query(questions).filter(questions.c.user_id==123).one()
答案 1 :(得分:7)
您可以使用Session.query(Base.metadata.tables['myTable']).all()
查询使用Table构造函数创建的表。