1. 程式人生 > >【Flask】Sqlalchemy 外鍵

【Flask】Sqlalchemy 外鍵

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 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。

【Flask】Sqlalchemy 外鍵