《flask web开发》这本书,数据库中多对多关系怎么用?,,问题原型是,现在要实现用
《flask web开发》这本书,数据库中多对多关系怎么用?,,问题原型是,现在要实现用
问题原型是,现在要实现用户之间的互相能够关注的功能,反应到数据库中是一个多对多的关系,书里引入了第三个关联表,模型是这么定义的(用户表是users,主键定义为id):
class Follow(db.Model): __tablename__ = 'follows' follower_id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True) followed_id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True) timestamp = db.Column(db.DateTime, default=datetime.utcnow)
Follow表中的每条记录代表着一个user关注另一个user,那么不论是follower_id列还是followed_id列都必然会出现重复。那么:
1.在这种情况下为何还能定义成主键呢?
2.如果不定义成主键会有什么不同?(是不能用了还是性能下降还是什么别的?)
一个表只有一个主键,不能同时设置多个primary key.
follower_id和followed_id应该设置为唯一键,即unique key.
用 Column 来定义一个列。类名就是你把赋给的那个变量的 名字。如果你想要在表中使用不同的名字,你可以提供一个想要的列名的字符串作为 可选第一个参数。主键用 primary_key=Ture 标记。可以把多个键标记为主键, 此时它们作为复合主键。
在SQLAlchemy的文档里看见的,所以这里的用法应当是复合主键。
编橙之家文章,
相关内容
- logger相同数据输出两条没实现效果,python源码没找到问题
- 安装pywin32提示:python 3.6版本-32需要在注册表中没有找到
- python hibernate 启动报错hibernate.properties not found,,hibern
- django auth模块login方法没有pk属性是什么问题,djangoaut
- 新手对python-sdk demo.py环境变量问题,python-sdkdemo.py,官方
- 解Python练习题源码,求大神看看有什么问题没,python练
- python调用tages标签查询相关文章怎么写,,项目用的是
- Python控制函数流程和上下文怎么解决?,python函数,py
- redis和memcache的应用场景是怎么样的?,redismemcache,除了
- Python哪种方法能准确获取网址,python获取网址,/*在做一
评论关闭