【Flask】ORM的关联关系
生活随笔
收集整理的這篇文章主要介紹了
【Flask】ORM的关联关系
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、表的外鍵關聯
使用SQLAlchemy創建外鍵非常簡單。在從表中增加一個字段,指定這個字段外鍵的是哪個表的哪個字段就可以了。從表中外鍵的字段,必須和主表的主鍵字段類型保持一致。
特別注意1:這種關聯只關注數據表之間的外鍵關聯,不考慮Python對象之間的關聯關系.
前提需要連接數據庫、創建數據庫引擎、創建基類、創建session
from sqlalchemy import create_engine, Column, Integer, ForeignKey, String, TEXT, Boolean, DATE, DECIMAL from sqlalchemy.ext.declarative import declarative_base from datetime import date from sqlalchemy.orm import sessionmaker # 數據庫的配置變量 HOSTNAME = '127.0.0.1' PORT = '3306' DATABASE = 'test' USERNAME = 'root' PASSWORD = 'root' DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8mb4'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)#創建數據庫引擎 engine=create_engine(DB_URI)#創建一個基類,所有的模型類繼承Base Base=declarative_base(engine)#創建session session=sessionmaker(engine)() #注意sessionmaker 返回一個函數創建主表模型類:
class Dept(Base):__tablename__='t_dept'dept_no=Column(name='dept_no',type_=Integer,primary_key=True,autoincrement=True)dept_name=Column(name='dept_name',type_=String(50),unique=True)city=Column(name='city',type_=String(50))def __str__(self):return f'{self.dept_no}-{self.dept_name}-{self.city}'創建從表模型類:
class Emp(Base):__tablename__='t_emp'emp_no=Column(name='emp_no',type_=Integer,primary_key=True,autoincrement=True)emp_name=Column(name='emp_name',type_=String(50))job=Column(name='job',type_=String(50))hire_date=Column(name='hire_date',type_=DATE)sal=Column(name='sal',type_=DECIMAL(10,2))dept_no=Column(ForeignKey(t_dept.dept_no,ondelete='CASCADE'),name='dept_no',type_=Integer)def __str__(self):return f'{self.emp_no}{self.emp_name}{self.job}{self.hire_date}{self.sal}'特別注意:設置外鍵關聯,在從表中增加一個字段,指定這個字段外鍵的是哪個表的哪個字段就可以了。從表中外鍵的字段,必須和主表的主鍵字段類型保持一致。
dept_no=Column(ForeignKey(t_dept.dept_no,ondelete='CASCADE'),name='dept_no',type_=Integer)根據模型類生成數據表
#根據模型類建表 Base.metadata.create_all() #刪除表 #Base.metadata.drop_all()插入數據
#插入數據 d1=Dept(dept_name='信息部',city='北京') session.add(d1) session.commit()e1=Emp(emp_name='kobe',job='銷售',hire_date='2020-12-12',sal='8888.888',dept_no=1) session.add(e1) session.commit()2、外鍵的刪除選項
舉例:CASCADE
主表
從表
刪除主表中dept_no為1的員工信息
執行完上述代碼后,從表中的關聯數據一起刪除
總結
以上是生活随笔為你收集整理的【Flask】ORM的关联关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Flask】flask上下文
- 下一篇: 【Flask】创建一个蓝图