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
Vous devez vous connecter pour publier un commentaire.
Je pense que c'est
Session.query(questions).filter(questions.c.user_id==123).one()
Sélectionnez les exposer directement sur la Table; il a pris un peu de moi pour comprendre: Tableau.sélectionnez
OriginalL'auteur Jochen Ritzel
Vous pouvez interroger les tables qui ont été créés avec la Table constructeur à l'aide de
Session.query(Base.metadata.tables['myTable']).all()
.OriginalL'auteur Noumenon