python flask(多對多表查詢),pythonflask

來源:互聯網
上載者:User

python flask(多對多表查詢),pythonflask

    我們在flask的學習中,會難免遇到多對多表的查詢,今天我也遇到了這個問題。那麼我想了好久。也沒有想到一個解決的辦法,試了幾種方法,可能是思路的限制我放棄了,後來,我就在網上百度,可是發現百度出來的結果和自己想要的還有一定的差距,那麼我根據百度上得來的思路,那麼我也對我的資料結構進行了探索, 下面來看看我這裡怎麼來查詢的,首先給大家看下我寫的資料庫的代碼的片段,這樣,加深理解。

post_class=db.Table('post_class',    db.Column('post_id',db.Integer(),db.ForeignKey('posts.id')),    db.Column('classifa_id',db.Integer(),db.ForeignKey('fenlei.id')))class Post(db.Model):#文章表    __tablename__='posts'    id=db.Column(db.Integer,primary_key=True,autoincrement=True)    title=db.Column(db.String(255),unique=True)    text=db.Column(db.Text())    publish_date=db.Column(db.DateTime,default=datetime.datetime.now())    user_id=db.Column(db.Integer,db.ForeignKey('users.id'))    is_recomment=db.Column(db.Boolean,default=False)    comments = db.relationship(        'Comment',        backref='posts',        lazy='dynamic')    tag = db.relationship(        'Tag',        secondary=posts_tags,        backref=db.backref('posts', lazy='dynamic')    )    classname=db.relationship('Classifa',        secondary=post_class,        backref=db.backref('posts'))    def __repr__(self):        return "<Model Post `{}`>".format(self.title)class Classifa(db.Model):#分類    __tablename__='fenlei'    id=db.Column(db.Integer(),primary_key=True)    name=db.Column(db.String(64))    def __repr__(self):        return self.name

這裡有三張表,一張呢是文章的列表,另一張呢,是分類表,我們來想下,一篇文章可能同時屬於多個分類,那麼一個分類可能也屬於多個文章,這麼來說想必我們大家都能理解這個邏輯,那麼呢,我第三表來顯示多對多關係的,那麼我們接下來怎麼去查詢呢,其實我現在的需求就是我要找個一個分類下面所有的文章吧,

下面來看看My Code

data=Classifa.query.filter_by(name='資料庫').first()  data_post=data.posts

這裡呢,我直接先從分類找到這個分類,然後通過第三表來查詢屬於這個分類的文章、其實呢 這裡很簡單,可能是我當時自己的腦子短路了吧, 不知道怎麼想是對的,現在來看 其實還是那麼的簡單,只是當時我忽略了什麼。    加油,學習前進的路上。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.