Flask orm 外來鍵及約束

2021-10-05 09:43:21 字數 2439 閱讀 8774

外來鍵

在mysql中,外來鍵可以讓表之前的關係更加親密。而sqlalchemy同樣也支援外來鍵,通過foreignkey 來實現,並且可以指定表 外來鍵約束。

外來鍵約束有以下幾項:

restrict: 父表資料被刪除,會用阻止刪除。預設就是這一項

no action: 在mysql中, 同restrict。

cascade:級聯刪除。

set null:父表資料被刪除子表資料會設定為null。

# @ time : 2020/4/23 23:08

# @ author : ellen

from sqlalchemy import create_engine

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy import column, integer, string, float, text, foreignkey

from sqlalchemy.orm import sessionmaker

hosename =

'127.0.0.1'

port =

'3306'

username =

'root'

password =

'root'

database =

'demo0422'

db_url =

'mysql+mysqlconnector://{}:{}@{}:{}/{}?charset=utf8'

.format

(username,password, hosename, port, database)

engine = create_engine(db_url)

base = declarative_base(bind=engine)

# user / article

class

user

(base)

: __tablename__ =

'user'

id= column(integer, primary_key=

true

, autoincrement=

true

) username = column(string(50)

)class

article

(base)

: __tablename__ =

'article'

id= column(integer, primary_key=

true

, autoincrement=

true

) title = column(string(50)

) content = column(text, nullable=

false

) uid = column(integer, foreignkey(

'user.id'

, ondelete=

'set null'))

base.metadata.drop_all(

)base.metadata.create_all(

)# session = sessionmaker(bind=engine)

# session = session()

session = sessionmaker(bind=engine)()

user = user(username=

'ellen'

)session.add(user)

session.commit(

)article = article(title=

'python'

, content=

'***x'

, uid=1)

session.add(article)

session.commit(

)# orm 刪除user表中的資料

user = session.query(user)

.first(

)print

(user.username)

session.delete(user)

session.commit(

)# 外來鍵的查詢

# article = session.query(article).first()

# uid = article.uid

# user = session.query(user).get(uid)

# print(user)

user = session.query(user)

.filter

(user.

id== article.uid)

.first(

)print

(user)

mysql外來鍵和外來鍵約束

1.mysql中 鍵 和 索引 的定義相同,所以外來鍵和主鍵一樣也是索引的一種。不同的是mysql會自動為所有表的主鍵進行索引,但是外來鍵字段必須由使用者進行明確的索引。用於外來鍵關係的字段必須在所有的參照表中進行明確地索引 2.如果表a的主關鍵字是表b中的字段,則該字段稱為表b的外來鍵,表a稱為主...

mysql 外來鍵和外來鍵約束

1.外來鍵 如果公共關鍵字在乙個關係中是主關鍵字,那麼這個公共關鍵字被稱為另乙個關係的外來鍵。就是a表的主鍵,被用到了b表中,此時它就成了外來鍵 2.外來鍵約束 如果想要插入或者更新外來鍵的值,資料庫會和引用表中字段的資料進行驗證,如果插入或更改的值不在被引用的表中,則插入失敗 外來鍵的作用就是保證...

外來鍵約束 外來鍵級聯操作

建立db2資料庫 create database db2 使用db2資料庫 use db2 外來鍵約束 標準語法 constraint 外鍵名 foreign key 本表外來鍵列名 references 主表名 主表主鍵列名 建表時新增外來鍵約束 建立user使用者表 create table u...