欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

flask mysql表一對多

林子帆2年前11瀏覽0評論

在使用Flask構建應用程序時,經常需要與數據庫進行交互。Flask和MySQL是非常流行的組合。在MySQL數據庫中,有一個重要的概念是表之間的關系。本文將介紹如何使用Flask和MySQL進行表一對多的關系拆分。

首先我們需要創建兩個表,包括一個main表和一個sub表。其中main表包含許多數據記錄,而每個記錄又可以有多個有關聯的子記錄。因此,我們需要在sub表中通過使用外鍵來管理與main表的關系。

CREATE TABLE main (
id INT PRIMARY KEY,
title VARCHAR(50),
content TEXT
);
CREATE TABLE sub (
id INT PRIMARY KEY,
main_id INT,
title VARCHAR(50),
content TEXT,
FOREIGN KEY(main_id) REFERENCES main(id)
);

接下來我們將使用Flask和MySQL-python包連接MySQL數據庫,并定義一個Model類來表示main表和sub表。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name'
db = SQLAlchemy(app)
class Main(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(50), nullable=False)
content = db.Column(db.Text, nullable=False)
subs = db.relationship('Sub', backref='main', lazy=True)
class Sub(db.Model):
id = db.Column(db.Integer, primary_key=True)
main_id = db.Column(db.Integer, db.ForeignKey('main.id'), nullable=False)
title = db.Column(db.String(50), nullable=False)
content = db.Column(db.Text, nullable=False)

在main表中我們添加了一個subs屬性表示與sub表的關系。它通過backref屬性與Sub表的定義相互關聯,使得我們可以在查詢Main表時也可以方便地獲取與之對應的Sub表。

現在我們已經將表定義好了,并且定義了相關Model類。接下來,我們可以利用這些Model類來操作數據庫,并且實現一對多的關系拆分。

@app.route('/')
def main_index():
mains = Main.query.all()
return render_template('main_index.html', mains=mains)
@app.route('//subs')
def sub_index(id):
main = Main.query.get_or_404(id)
subs = main.subs
return render_template('sub_index.html', subs=subs)

在主頁調用main_index函數時,我們會從Main表中獲取所有記錄,并傳遞到模板中顯示。在sub_index函數中,我們通過查詢主鍵與id匹配的Main元素,并獲取與之關聯的Sub元素列表,再將其作為模板參數傳遞給sub_index的模板展示。

至此,我們成功實現了在Flask應用程序中表一對多的關系拆分。通過本文的介紹,您應該能夠更好的理解在Flask和MySQL中管理表之間的關系。