简体   繁体   English

使用Flask-SQLAlchemy的许多人返回原始sql而不是执行

[英]Many to many using Flask-SQLAlchemy returns raw sql instead of executed

Im using the python framework flask with sqlalchemy. 我正在使用带有sqlalchemy的python框架烧瓶。

My many-to-many looks like this: 我的多对多看起来像这样:

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

Now if i do 现在,如果我这样做

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

collection.questions does not return a list of questions, instead it returns the following query. 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

Any help would be greatly apprecieted! 任何帮助都会非常感激!

Thanks 谢谢

you're using lazy="dynamic", so collection.questions is a Query object. 你正在使用lazy =“dynamic”,所以collection.questions是一个Query对象。 You need to iterate over it to emit SQL and get the contents: 您需要迭代它以发出SQL并获取内容:

list(collection.questions)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM