12.19:外键使用
今天要设计一个如图关系的表关系时,踩了好几个坑…记录下
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| from exts import db
class Account(db.Model): __tablename__ = 'account' id = db.Column(db.Integer,primary_key=True,autoincrement=True) Username = db.Column(db.String(30),nullable=True,unique=True) PWD = db.Column(db.String(20),nullable=True) email = db.Column(db.String(20),nullable=True,unique=True)
class Info(db.Model): __tablename__ = 'info' id = db.Column(db.Integer,primary_key=True,autoincrement=True) email = db.Column(db.String(20),db.ForeignKey('account.email')) timestamp = db.Column(db.Float,nullable=True,unique=True)
class Tmp(db.Model): __tablename__ = 'tmp' id = db.Column(db.Integer,primary_key=True,autoincrement=True) tmp = db.Column(db.Float,db.ForeignKey('info.timestamp')) nowtime = db.Column(db.FLOAT,nullable=True) longitude = db.Column(db.FLOAT,nullable=True) latitude = db.Column(db.FLOAT,nullable=True)
|
id
的类型是int
,没有id
这种类型
- ▲.外键必须是主表的唯一键(unique)(如上,学生表 sid 是主键,而主键是唯一的,所以能够作为分数表 stu 的外键)
- 外键不一定须要作为从表的主键。外键也不一定是主表的主键。主表的唯一键就能够作为从表的外键。
- 外键的类型必须与父表的主键类型完全一致(类型和长度)
总结下来: