Comment interroger une table, dans sqlalchemy

Je sais comment interroger sur un modèle maintenant. Supposons qu'il y est un Question modèle:

class Question(Base):
    __tablename__ = "questions"
    id=Column(...)
    user_id=Column(...)
    ...

Maintenant, je peux le faire:

question = Session.query(Question).filter_by(user_id=123).one()

Mais, maintenant, j'ai une table (pas un modèle) questions:

questions = Table('questions', Base.metadata,
                  Column(id, ...),
                  Column(user_id, ...),
                  ....)

Comment l'interroger comme ce que je fais avec des modèles?

Session.query(questions).filter_by(user_id=123).one()

Ce sera un rapport d'erreur:

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'

Mais:

Session.query(questions).all()

est OK.

Est filter_by de travail uniquement pour les modèles? Comment puis-je interroger sur les tables?

OriginalL'auteur Freewind | 2010-09-01

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *