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。

  • 相关阅读:
    Solr4.7+Tomcat7.0配置
    Solr suggest 搜索建议功能 配置问题
    Solr 通过经纬度指定范围搜索
    Quartz.net 实例
    log4net简单实例
    依赖注入(Autofac)
    设计模式_状态模式_C#
    C# XML操作
    策略模式_C#_设计模式
    STM32随记
  • 原文地址:https://www.cnblogs.com/chen0427/p/8647525.html
Copyright © 2011-2022 走看看