外來鍵
在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...