Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

flask-sqlalchemy踩坑——外键

2019/09/15 flask 数据库
Word count: 324 | Reading time: 2min

12.19:外键使用

今天要设计一个如图关系的表关系时,踩了好几个坑…记录下

E-R图

代码:

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)
  1. id的类型是int,没有id这种类型
  2. ▲.外键必须是主表的唯一键(unique)(如上,学生表 sid 是主键,而主键是唯一的,所以能够作为分数表 stu 的外键)
  3. 外键不一定须要作为从表的主键。外键也不一定是主表的主键。主表的唯一键就能够作为从表的外键。
  4. 外键的类型必须与父表的主键类型完全一致(类型和长度)

总结下来:

1

2

Author: Mrli

Link: https://nymrli.top/2018/12/19/flask-sqlalchemy踩坑/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
Postman模拟上传文件
NextPost >
数据结构实验3——图的基本运算及职能交通中的最佳路径选择问题
CATALOG
  1. 1. 12.19:外键使用
    1. 1.1. 总结下来: