zoukankan      html  css  js  c++  java
  • 【Flask】Sqlalchemy 外键

    ### 外键:
    使用SQLAlchemy创建外键非常简单。在从表中增加一个字段,指定这个字段外键的是哪个表的哪个字段就可以了。从表中外键的字段,必须和父表的主键字段类型保持一致。
    示例代码如下:

     1 from sqlalchemy import create_engine, Column, Integer, String, Text, ForeignKey
     2 
     3 from sqlalchemy.ext.declarative import declarative_base
     4 from sqlalchemy.orm import sessionmaker
     5 
     6 HOSTNAME = '127.0.0.1'
     7 PORT = 3306
     8 DATABASE = 'sqlalchemy_first'
     9 USERNAME = 'root'
    10 PASSWORD = '123456'
    11 
    12 DB_URI = 'mysql+pymysql://{username}:{password}@{host}:{port}/{dbname}?charset=utf8'.format(
    13         username=USERNAME, password=PASSWORD, host=HOSTNAME, port=PORT, dbname=DATABASE
    14 )
    15 engine = create_engine(DB_URI)
    16 Base = declarative_base(engine)
    17 Session = sessionmaker(engine)
    18 session = Session()
    19 
    20 
    21 # user
    22 class User(Base):
    23     __tablename__ = 'user'
    24     id = Column(Integer, primary_key=True, autoincrement=True)
    25     username = Column(String(50), nullable=False)
    26 
    27 
    28 # article
    29 class Article(Base):
    30     __tablename__ = 'article'
    31     id = Column(Integer, primary_key=True,autoincrement=True)
    32     title = Column(String(50), nullable=False)
    33     conent = Column(Text, nullable=False)
    34     uid = Column(Integer, ForeignKey("user.id"))
    35 
    36 Base.metadata.drop_all()
    37 Base.metadata.create_all()

    外键约束有以下几项:
    1. RESTRICT:父表数据被删除,会阻止删除。默认就是这一项。
    2. NO ACTION:在MySQL中,同RESTRICT。
    3. CASCADE:级联删除。
    4. SET NULL:父表数据被删除,子表数据会设置为NULL。

  • 相关阅读:
    转一篇:arp欺骗的原理和防御
    CF1209A Paint the Numbers
    字符串专题之KMP算法
    CF1209B Koala and Lights
    CF1217A Creating a Character
    CF1217B Zmei Gorynich
    各种模板
    开通博客园拉..
    汇编语言程序设计学习笔记(第一遍学习)第4节:汇编就像HTML一样简单
    我也要学C语言第二十章:结构体类型变量,结构体数组
  • 原文地址:https://www.cnblogs.com/chen0427/p/8647525.html
Copyright © 2011-2022 走看看