码迷,mamicode.com
首页 > 数据库 > 详细

【Flask】Sqlalchemy 外键

时间:2018-03-26 00:33:24      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:rest   word   res   uid   on()   database   ase   数据   foreign   

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

标签:rest   word   res   uid   on()   database   ase   数据   foreign   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!