1. 程式人生 > >flask中資料庫表的多對多模型的建立

flask中資料庫表的多對多模型的建立

多對多關係描述有一個唯一的點就是:需要新增一張單獨的表去記錄兩張表之間的對應關係 ,然後在任意一個模型中增加關係引用即可。

聯合主鍵:多個欄位合在一起當主鍵

以下是程式碼部分:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 配置資料庫資訊
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:[email protected]/student_course'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

# 多對多模型需要新增一張單獨的表去記錄兩張表之間的對應關係
tb_student_course = db.Table('tb_student_course',
                             db.Column('student_id', db.Integer, db.ForeignKey('students.id')),
                             db.Column('course_id', db.Integer, db.ForeignKey('courses.id'))
                             )

# 建立學生表
class Students(db.Model):
    __tablename__ = 'students'
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(64),unique=True)

# 建立課程表
class Course(db.Model):
    __tablename__ = 'courses'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    # 在任意一個模型中新增關係引用
    students = db.relationship('Students',
                               secondary=tb_student_course,  #### 引用例項物件,不加引號
                               backref='courses',
                               lazy='dynamic')


@app.route('/')
def helloworld():
    return 'hello world'

if __name__ == '__main__':
    db.drop_all()
    db.create_all()

    # 新增測試資料

    stu1 = Students(name='張三')
    stu2 = Students(name='李四')
    stu3 = Students(name='王五')

    cou1 = Course(name='物理')
    cou2 = Course(name='化學')
    cou3 = Course(name='生物')

    stu1.courses = [cou2, cou3]
    stu2.courses = [cou2]
    stu3.courses = [cou1, cou2, cou3]

    db.session.add_all([stu1, stu2, stu2])
    db.session.add_all([cou1, cou2, cou3])

    db.session.commit()
    app.run(debug=True)

相關推薦

flask資料庫模型建立

多對多關係描述有一個唯一的點就是:需要新增一張單獨的表去記錄兩張表之間的對應關係 ,然後在任意一個模型中增加關係引用即可。 聯合主鍵:多個欄位合在一起當主鍵以下是程式碼部分:from flask import Flask from flask_sqlalchemy impo

JDBC上關於資料庫操作一對關係和關係的實現方法--轉

  原文地址---- https://www.cnblogs.com/pangguoming/p/7028322.html 黑馬程式設計師 我們知道,在設計一個Java bean的時候,要把這些BEAN 的資料存放在資料庫中的表結構,然而這些資料庫中的表直接又有些特殊

flask資料庫模型演練

多對多演練在專案開發過程中,會遇到很多資料之間多對多關係的情況,比如:學生網上選課(學生和課程)老師與其授課的班級(老師和班級)使用者與其收藏的新聞(使用者和新聞)等等...所以在開發過程中需要使用 ORM 模型將表與表的多對多關聯關係使用程式碼描述出來。多對多關係描述有一個

資料庫關係的中間的命名規則

         在關係資料庫中,除了一對一,一對多外,還有一個多對多關係.前兩個關係都只需要兩個表本身就能表達清楚他們之間的關係,而多對多關係則需要第三張中間表來表達清楚兩張表之間的關係.         中間表在一般情況下是由三個欄位組成:               

python flask(查詢)

color mat integer ring 網上 uniq 自己的 class 根據 我們在flask的學習中,會難免遇到多對多表的查詢,今天我也遇到了這個問題。那麽我想了好久。也沒有想到一個解決的辦法,試了幾種方法,可能是思路的限制我放棄了,後來,我就在網上百度

TP模型關聯的關系

tp5 php modelTP5中完全推翻了3.2的做法,不再使用原來的查詢語句,比如select,join之類的條件查詢。而是使用模型關聯,一對多和多對多的關系進行關聯。方便用戶調用數據,減少代碼的編寫量。下面直接開始上代碼:role.php(model層)class Role extends Mode

ef core如何實現映射關系

uil set ring one int 實現 log ons lB 文檔:https://docs.microsoft.com/en-us/ef/core/modeling/relationships class MyContext : DbContext {

使用GreenDao建立、關聯(一對一,一對)、CURD、升級資料庫等操作

        應用場景:從照片中找出包含有使用者人臉的照片,並儲存該照片中的人臉特徵、使用該特徵和使用者人臉特徵對比,滿足條件,照片就儲存到該使用者表裡 一、建立表 GreenDao託管地址:https://github.com/greenrobot

flask連線mysql資料庫的一對一,一對的處理關係。

Y18    以學生表與班級表為例,進行一對一,與一對多操作說明。 簡單部署: 1、建立flask資料夾,在資料夾中建立python檔案,命名為app,其中程式碼: from flask import Flask app = Flask(__name__) 2

django連線mysql資料庫的一對一,一對關係模型建立

Y19   介紹如何建立各種關係的資料模型,具體實現各種功能 先配置settings.py中連線mysql資料庫:(Y12有介紹) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.m

flask一對一,一對以及關係的設定

一對多關係: class Grade(db.Model): id=db.Column(db.Integer,primary_key=True) name=db.Column(db.String(20),nullable=False) num = db.Column(db.Int

資料庫關聯關係

資料庫多表關聯對多對關係 本文章解決資料庫設計多表關聯配置問題,多對多關係! 設計思路: 應用場景: 1,區域表(欄位:id(城市id)、name(城市名字)) 表名:pms_region 2,中間表(欄位:shipping_area_id、re

JPA關係的刪除操作,如何刪除放棄維護關聯關係的一方和中間的紀錄

資料庫中的表 使用者表:在配置實體類的時候放棄了維護關聯關係的權利 角色表: 中間表: 需求:刪除t_user表中的user_id 為1的使用者,並刪除相關的中間表紀錄。 程式碼: @Test public

Django資料庫的資料關係:一對一,一對

一對一: 一對一的關係極為一個數據僅對應一個數據,用下圖的結構圖可以幫助理解: 下面用程式碼實現一下,首先要建立工程專案如下: 接著,我們定義模型: 來到models.py檔案,建立兩個模型: from django.db import models #

MyCat分片規則(全域性,ER分片關聯,主鍵分片VS非主鍵分片),MyCat常用的分片規則(15分片規則),自定義MyCat分片規則

1 MyCat分片規則 資料切分中重要的幾條原則,其中有幾條資料冗餘,表分組(Table Group)。 1.1全域性表 如果你的業務中有些資料類似於資料字典,比如配置檔案的配置,常用業務的配置或資料量不是很大,很少變動的表,這些表往往不是特別大,而且大部分的業務場景都

flask 關係 主從之間查詢

model層 class Studentnew(db.Model): id = db.Column(db.Integer,primary_key=True) name = db.Column(db.String(20),unique=True) #

獲取模型完整的資料

可獲取到model中query多對多的完整資料 query = queryset.order_by(ordering).first() for topic in query._meta.many_to_many: lista = l

JPA關係的刪除操作,如何只刪除一方和中間的紀錄

資料庫中的表 使用者表: 角色表: 中間表: 需求:刪除t_user表中的user_id 為1的使用者,並刪除相關的中間表紀錄。 程式碼: @Test public void testRemove() {

資料庫中表與之間建立關係(一對

一、一對多的關係 例:公司與員工的關係,公司為一,公司員工為多,需要在多方建立外來鍵指向一方的主鍵。 一對多讓兩個實體類之間相互表示 (1)一個公司裡面有多個員工。 private Set<yuangong> yuangongSet=new HashSet

Hibernate的annotation的寫法(中間可以有個欄位)

一般情況下,多對多的關聯關係是需要中間表的; 情況一:如果中間表僅僅是做關聯用的,它裡面僅有2個外來鍵做聯合主鍵,則使用ManyToMany(不用寫中間表的Model,只需要寫出兩張主表的model即可) 學生表 @Entity@Table(name = "T_STUDENT")@SequenceGener