Flask框架之ORM層面外來鍵和多對多關係

2021-10-02 09:02:22 字數 2300 閱讀 8272

多對多的關係需要通過一張中間表來繫結他們之間的關係。

先把兩個需要做多對多的模型定義出來

使用table定義乙個中間表,中間表一般就是包含兩個模型的外來鍵字段就可以了,並且讓它們兩個來作為一復合主鍵

在兩個需要做多對多的模型中隨便選擇乙個模型,定義乙個relationship屬性,來繫結三者之間的關係,在使用relationship的時候,需要傳入乙個secondary=中間表物件名

from sqlalchemy import create_engine,column,integer,float,boolean,decimal,enum,\

date,datetime,time,string,text,func,or_,and_,foreignkey,table

from sqlalchemy.dialects.mysql import longtext

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import sessionmaker,relationship,backref

import random

hostname =

'127.0.0.1'

port =

'3306'

database =

'first_sqlalchemy'

username =

'root'

password =

'root'

db_uri =

"mysql+pymysql://:@:/?charset=utf8"\

.format

(username=username,password=password,host=hostname,port=port,db=database)

engine = create_engine(db_uri)

base = declarative_base(engine)

session = sessionmaker(engine)()

#表3 中間表

news_tag = table(

"news_tag"

, base.metadata,

column(

"news_id"

,integer,foreignkey(

"news.id"

),primary_key=

true),

column(

"tag_id"

,integer,foreignkey(

"tag.id"

),primary_key=

true))

#表1

class

news

(base)

: __tablename__ =

'news'

id= column(integer,primary_key=

true

,autoincrement=

true

) title = column(string(50)

,nullable=

false

)def

__repr__

(self)

:return

""% self.title

#表2

class

tag(base)

: __tablename__ =

'tag'

id= column(integer, primary_key=

true

, autoincrement=

true

) name = column(string(50)

, nullable=

false

)# 產生關係

newss = relationship(

"news"

,backref=

"tags"

,secondary=news_tag)

def__repr__

(self)

:return

""% self.name

base.metadata.drop_all(

) base.metadata.create_all(

)

Django資料之ORM外來鍵操作

如果公共關鍵字在乙個關係中是主關鍵字,那麼這個公共關鍵字被稱為另乙個關係的外來鍵。建立外來鍵 表一 class foo models.model name models.charfield max length 1 表二class business models.model id caption m...

flask框架3(資料庫ORM)

flask sqlalchemy 配置 其他配置 使用class user db.model tablename user id db.column db.integer,primary key true,autoincrement true name db.column db.string 50 ...

使用sqlalchemy的ORM建立外來鍵關聯時報錯

在學習使用sqlalchemy模組的時候踩了乙個坑,分享一下。我先用下面的語句建立了一張學生資訊表 create table student id int unsigned auto increment,name varchar 20 not null,age tinyint,primary key...