首页 > 数据库技术 > 详细

【Flask】Sqlalchemy 外键

时间:2018-03-25 23:28:48      阅读:354      评论:0      收藏:0      [点我收藏+]

### 外键:
使用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 外键

原文:https://www.cnblogs.com/chen0427/p/8647525.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!