数据库中外键知识
来源:互联网 发布:韩语配音软件 编辑:程序博客网 时间:2024/04/28 08:22
class Tweet(db.Model):
tablename = ‘tweets’
…
user_id = db.Column(db.Integer, db.ForeignKey(‘users.id’))
class User(db.Model):
tablename = ‘users’
…
tweets = db.relationship(‘Tweet’, backref=’user’)
定义两个类,一个推特有一个发推特的用户,一个用户会发多个推特,所以要把推特和用户关联起来。
推特类的模型设计:
推特需要知道是谁发的,所以定义一个user_id字段,用来保存user的id,这个字段就是外键,用来关联推特类和用户类
传给db.ForeignKey()的 ‘users.id’ 参数,就是表示user_id这个字段为user.id的值,通过user_id就可以查询这是由哪个id发的推特。
用户类的模型设计:
tweets = db.relationship(‘Tweet’, backref=’user’)
relationship表明它不是一个字段,而是User类的一个属性,user类表中没有tweets这个字段,db.relationship()中第一个参数 ‘Tweets’ 是类名,表示关系的另一端是Tweets类,对于一个User类的实例(某一个用户),调用tweets属性,将根据该用户的ID(对应tweets类里面的user_id字段)查询并返回所有推特。
db.relationship() 中的 backref 反向应用表示向Tweet类模型添加一个user属性,来实现反向引用,这一属性和 user_id 都可以访问 User 模型, 不同的是前者获取的是类模型实例对象, 而后者获取的是外键的值。
假设:
u = User()
t = Tweet()
u 的 username 是 ‘xd’ , u 的 id 是 3
用户’xd’ 发了10条推特
t 是 ‘xd’ 发的第5条推特, 内容是’666’
那么:
u.tweets 将以列表形式返回用户 ‘xd’ 的10条推特
t.content 将返回 '666't.user_id 将返回这条推特的用户的 id 也就是3, 但并不知道发推用户的名字t.user 将返回这条推特的用户实例 u, t.user.username 就可以获得用户的名字
- 数据库中外键知识
- 数据库中外键的作用
- 数据库中外键属性的设置
- mysql数据库中外键的用法
- Mysql数据库中外键作用及属性
- 伪知识之了解数据库中外键主键的区别以及含义持续更新:【内向即失败--王奕君】
- 数据库中外键的作用以及和主键的区别
- mysql数据库中外键的级联删除功能
- MySql中外键约束
- mybatis 数据库表中外键关系存在时 useGeneratedKeys="true" keyProperty="id"
- MySQL中外键删除、更新
- MySQL中外键设置详解
- mysql 中外键的作用
- django模型中外键操作
- 数据中外键和主键
- mysql中外键的作用
- 数据库外键知识
- oracle8中外键导致锁的问题
- 这20个正则表达式,能让你少写1,000行代码
- 模拟滤波器和数字滤波器
- 关于GreenDao你应该知道的小技巧
- nodejs之——cookie和 session应用
- S4.4_Struts2_ActionAdvance action通配符的用法
- 数据库中外键知识
- DispatcherServlet
- 查看系统信息等命令
- 管道的简单应用
- java并发问题
- 《转》网卡的工作模式及iwconfig 使用手册(内容很丰富,有用,转自Openwrt论坛)
- 函数与闭包的应用实例
- Hdu ::FatMouse' Trade
- Quartz框架——实现定时任务调度