数据库的基本操作2-关系引用 | 学习笔记

简介: 快速学习数据库的基本操作2-关系引用

开发者学堂课程【Python Web  框架  Flask  快速入门数据库的基本操作2-关系引用】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/603/detail/8798


数据库的基本操作2-关系引用


目录

一、模型之间的关联

二、关键代码



一、模型之间的关联

一对多

class Role( db.Model):

#关键代码

user = db.relationship('User' , backref='role')

class User (db.Model):

role_id = db.Column(db.Integer, db.ForeignKey('roles.id '))

其中  realtionship  描述了  Role  和  User  的关系。在此文中,第一个参数为对应参照的类  "User"

第二个参数  backref  为类  User  申明新属性的方法

表格:

Role

 

 

 

 

role_id主题

role_name 唯一

Users

 

仅仅是为了方便查询,需要一些属性便利的去查询数据。但是这些属性不能出现在数据库的字段中

1

管理员

张三、李四

 

 

2

管理用户

王五

 

 

User

 

 

 

直接通过  user  查询出用户所属的角色名

user_id

user_name

role_id 多的一方:外键  

role

 

1

张三

1

管理员

1.需要先查询出role_id

2

李四

1

管理员

2.根据  role_id  去另一张表查询

3

王五

2

普通用户

二、关键代码

class Role(db.Model):

#定义表名

__tablename__= ’roles'

#定义字段

#db.Column表示是一个字段

id = db.Column(db.Integer, primary_key=True)

name = db.Column(db.String (16), unique=True)

#在一的一方,写关联

# users = db.relationship('User'):表示和User模型发生了关联,增加了一个users属性#backref='role':表示role是User要用的属性

users = db.relationship('User' , backref='role')

#rqpr()方法显示一个可读字符串

def__repr__ (self):

return '' %( self.name,self.id)

class User(db.Model) :

__tablename__ = 'users’

id = db.Column(db.Integer, primary_key=True)

name = db.Column(db.String(16), unique=True)

email = db.Column(db.String(32), unique=True)

password = db.column (db.String(32))

#db.ForeignKey ('roles.id')表示是外键. 表名.id

role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))

# User希望有role属性,但是这个属性的定义,需要在另一个模型中定义

def ___repr__(self) :

return '' % (self.name,self.id,self.email,self.password)

在终端输入exit退出,输入ipython重新导入代码,在Pycharm中写入为:

In [1]: from Flask_sQLalchemy_demo import*

添加一个角色和两个用户

In [2]: role = Role(name='admin')

In [3]: db.session.add(role)

In [4]: db.session.commit()

In [5]: user1 = User(name='zs', role_id=role.id)

In [6]: user2 = User(name='ls', role_id=role.id)

In [7]: db.session.add_all([user1,user2])

In [8]: db.session.commit()

实现关系引用查询

In [9]: role.users

out[9]:[,]

In [10]: user1.role

out[10]:

In [11]: user2.role.name

out[11]: u'admin'

相关文章
|
4月前
|
分布式计算 Java Hadoop
杨校老师课堂之分布式数据库HBase的部署和基本操作
杨校老师课堂之分布式数据库HBase的部署和基本操作
48 0
|
8天前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
2月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
49 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
2月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
68 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
2月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
31 6
|
2月前
|
存储 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
33 4
|
2月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(中)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
25 3
|
2月前
|
开发工具 数据安全/隐私保护 索引
LDAP学习笔记之二:389-DS(RHDS) 增删改查基本操作
LDAP学习笔记之二:389-DS(RHDS) 增删改查基本操作
|
4月前
|
SQL Oracle 关系型数据库
Oracle数据库基础教程:从安装到基本操作的全面介绍
Oracle数据库基础教程:从安装到基本操作的全面介绍
|
5月前
|
SQL 关系型数据库 MySQL
mysql 数据库 增删改查 基本操作
mysql 数据库 增删改查 基本操作
下一篇
无影云桌面