2012-04-02 58 views
4

Im使用python框架与sqlalchemy烧瓶。许多使用Flask-SQLAlchemy的程序都会返回原始的sql而不是执行

我的许多一对多看起来像这样:

collections_questions = db.Table('collections_questions', 
     db.Column('question_id',db.Integer,db.ForeignKey('question.id')), 
     db.Column('collection_id',db.Integer,db.ForeignKey('collection.id')) 
) 
class Collection(db.Model): 
    id = db.Column(db.Integer,primary_key=True) 
    title = db.Column(db.String) 
    lang = db.Column(db.Integer) 
    questions = db.relationship('Question',secondary=collections_questions,backref=db.backref('collections'),lazy='dynamic') 
    def __init__(self,title,lang=0): 
     self.title = title 
     self.lang = lang 

class Question(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    title = db.Column(db.String) 
    question = db.Column(db.String) 
    lang = db.Column(db.Integer) 
    type = db.Column(db.Integer) 

    def __init__(self,title,question,lang=0,type=0): 
     self.title = title 
     self.question = question 
     self.lang = lang 
     self.type = type 

现在,如果我这样做

collection = db.session.query(Collection).get(1) 

collection.questions不返回的问题的列表,而是返回下面的查询。

SELECT question.id AS question_id, question.title AS question_title, question.question AS question_question, question.lang AS question_lang, question.type AS question_type 
FROM question, collections_questions 
WHERE :param_1 = collections_questions.collection_id AND question.id = collections_questions.question_id 

任何帮助将大大增加!

感谢

回答

7

你使用懒惰= “动态”,所以collection.questions是一个Query对象。您需要遍历它以发出SQL并获取内容:

list(collection.questions) 
+0

ahaaa! Thansk很多! – Ludvig 2012-04-05 12:13:44

相关问题