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。

  • 相关阅读:
    同步gitlab与github
    配置hosts快速访问GitHub
    Linux下Julia安装
    LATEX图片位置
    IPOPT安装
    sqlplus传入shell变量
    users表空间满导致应用无法连接
    坏块修复 ORA-00701
    Oracle中INITRANS和MAXTRANS参数(转)
    DBMS_ROWID包的使用
  • 原文地址:https://www.cnblogs.com/chen0427/p/8647525.html
Copyright © 2011-2022 走看看