2010-09-01 13 views
15

में मुझे पता है कि अब मॉडल पर कैसे क्वेरी करें। मान लीजिए कि एक Question मॉडल है:एक तालिका में क्वेरी कैसे करें, sqlalchemy

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, ...), 
        ....) 

कैसे मॉडल के साथ मैं क्या करता हूं इसे पूछने के लिए?

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).filter_by(user_id=123).one() 

यह एक त्रुटि रिपोर्ट करेंगे

Session.query(questions).all() 

ठीक है।

filter_by केवल मॉडल के लिए काम है? मैं टेबल पर कैसे पूछ सकता हूं?

उत्तर

20

मुझे लगता है कि यह Session.query(questions).filter(questions.c.user_id==123).one()

+20

क्या टेबल के माध्यम से पूछताछ के लिए कोई दस्तावेज है? – JRodDynamite

+1

चयन तालिका पर सीधे खुलासा किया गया है; मुझे थोड़ी ले लिया यह पता लगाने की: [Table.select] (http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.Table.select) – chris

4

है आप टेबल Session.query(Base.metadata.tables['myTable']).all() का उपयोग कर तालिका निर्माता के साथ बनाए गए क्वेरी कर सकते हैं।

संबंधित मुद्दे