如何在sqlalchemy中查询表

Fre*_*ind 20 python sqlalchemy

我现在知道如何查询模型.假设有一个Question模型:

class Question(Base):
    __tablename__ = "questions"
    id=Column(...)
    user_id=Column(...)
    ...
Run Code Online (Sandbox Code Playgroud)

现在,我可以这样做:

question = Session.query(Question).filter_by(user_id=123).one()
Run Code Online (Sandbox Code Playgroud)

但是,现在,我有一张桌子(不是模特)questions:

questions = Table('questions', Base.metadata,
                  Column(id, ...),
                  Column(user_id, ...),
                  ....)
Run Code Online (Sandbox Code Playgroud)

如何查询它作为我对模型的处理?

Session.query(questions).filter_by(user_id=123).one()
Run Code Online (Sandbox Code Playgroud)

这将报告错误:

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

但:

Session.query(questions).all()
Run Code Online (Sandbox Code Playgroud)

没关系

难道filter_by只为模型的工作?我怎样才能查询表格?

Joc*_*zel 28

我想这是 Session.query(questions).filter(questions.c.user_id==123).one()

  • 有查询表的文档吗? (27认同)
  • Select直接暴露在表中; 我想了一下:[Table.select](http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.Table.select) (2认同)

Nou*_*non 8

您可以查询使用Table构造函数创建的表 Session.query(Base.metadata.tables['myTable']).all().