python flask(多對多表查詢)

来源:http://www.cnblogs.com/leiziv5/archive/2017/06/24/7074634.html
-Advertisement-
Play Games

我們在flask的學習中,會難免遇到多對多表的查詢,今天我也遇到了這個問題。那麼我想了好久。也沒有想到一個解決的辦法,試了幾種方法,可能是思路的限制我放棄了,後來,我就在網上百度,可是發現百度出來的結果和自己想要的還有一定的差距,那麼我根據百度上得來的思路,那麼我也對我的數據結構進行了探索, 下麵來 ...


    我們在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

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

下麵來看看我的代碼

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

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 概述: Windows Presentation Foundation (WPF) 提供了一組服務,這些服務可用於擴展公共語言運行時 (CLR) 屬性的功能。這些服務通常統稱為 WPF 屬性系統。由 WPF 屬性系統支持的屬性稱為依賴項屬性。 依賴項屬性提供用來擴展屬性功能的功能, 最常用的莫過於“ ...
  • Lambda 表達式是一種可用於創建 委托 或 表達式目錄樹 類型的 匿名函數 。 通過使用 lambda 表達式,可以寫入可作為參數傳遞或作為函數調用值返回的本地函數。 Lambda 表達式對於編寫 LINQ 查詢表達式特別有用。 若要創建 Lambda 表達式,需要在 Lambda 運算符 => ...
  • Python是一種簡單易學,且功能強大的編程語言。它是面向對象的編程語言。 Python環境安裝配置: Python是一種通用的電腦編程語言,它可以應用於web,Desktop以及game中,在使用Python時最好使用 Python數字 Python字元串 Python列表 Python元組 P ...
  • 公司用的是mysql5.6,該異常是mysql字元集問題,mysql支持的 utf8編碼最大字元長度為 3 位元組,如果遇到表情符這樣的4 位元組的字元就會插入異常。 解決方法: 1.在資料庫層面處理,重新設置資料庫編碼,對資料庫數據進行遷移,對單資料庫應用需停機操作; 2.在程式中進行處理,一般項目都 ...
  • 最近的練手項目使用的是 Maven 在管理項目,在使用 Maven 管理項目時,三層的開發時分模塊開發的,parent-dao-service-web,所有的spring+struts + Hibernate的依賴都是加在 parent 上,dao-service-web都是作為子模塊,在模塊之間的... ...
  • 進程: 1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 import multiprocessing,threading,time 5 6 def run(name): 7 t=threading.Thread(ta ...
  • 一.緣起 剛剛工作兩年,技術還很挫。但是在學習Java的過程中,看到過不少好書,寫下這篇博客不僅是為了推薦,過去學習經歷的一個總結。如果時間能夠重來的話,我將按照以下書單來學習Java。 二.Java基礎篇 1. Head First Java Head First系列又名大頭書系列,這個系列的書都 ...
  • 滑鼠事件監聽機制的三個方面: 1.事件源對象: 事件源對象就是能夠產生動作的對象。在Java語言中所有的容器組件和元素組件都是事件監聽中的事件源對象。Java中根據事件的動作來區分不同的事件源對象,動作發生在哪個組件上,那麼該組件就是事件源對象 2.事件監聽方法: addMouseListener( ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...