【Flask】Sqlalchemy 外鍵
阿新 • • 發佈:2018-03-26
gin IT 從表 tex database make div 必須 text
### 外鍵:
使用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 29class 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。
【Flask】Sqlalchemy 外鍵