flask中通过sqlalchemy 创建数据库模型操作以及映射关系

首先进行安装配置 

数据库 和框架的配置
1. 安装  SQLAlchemy 
pip install flask- sqlalchemy
2. 安装 mysql
pip install flask- mysqldb
3 . 创建数据库
create database flask_test charset utf8;
From flask import Flask
# SQLAlchemy 导入进来
From flask_sqlalchemy import SQLAlchemy
a pp = Flask _name__
初始化数据库 
db = SQLAlchemy (app)
If __name__ == “__main__”
a pp.run ()
运行flask之后会提示两个错误如下图

提示报错 app配置

#数据库链接地址

app.config['SQLALCHEMY_DATABASE_URI']='mysql://root:root@127.0.0.1:3306/flask_test'

#自动追踪数据库的修改

app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=True

然后重启解决这个提示错误。

接下来开始创建模型

创建模型的语法

语法: class MODELNAME(db.Model):

  __tablename__ = ‘TABLENAME’

  COLUMN_NAME = db.Column(db.TYPE,OPTIONS)

1.MODELNAME:定义模型类名称,根据表名设定

2.TABLENAME:映射到数据库中表的名字

3.COLUMN_NAME:属性名,映射到表中列的名字

4.db.TYPE:映射到列的数据类型

5.OPTIONS:列选项.

 

 

 创建完成之后我们这个表怎么创建成功呢?

在指定的路由执行一个命令

  # db.create_all()创建表的命令

  # db.drop_all() 删除表的命令

会自动创建模型中对应的表

以上是创建单个表的操作方式

如果表结构是一对多中间,怎么创建呢?

以一个用户表和文章表为例  代码如下:

#创建用户模型
class Users(db.Model):
    id=db.Column(db.Integer,primary_key=True)
    uname=db.Column(db.String(20),unique=True,nullable=False)
    pwd=db.Column(db.String(150),nullable=False)
    sex=db.Column(db.String(2),nullable=False)
    mob=db.Column(db.String(11),nullable=False,unique=True)
    imgs=db.Column(db.String(100),nullable=True)
    create_time=db.Column(db.DATETIME,default=datetime.now)
   articles=db.relationship('Article',backref='user')
#创建文章模型
class Article(db.Model):
    aid=db.Column(db.Integer,primary_key=True)
    title=db.Column(db.String(100),unique=True,nullable=False)
    abstract=db.Column(db.String(200),nullable=False)
    thumb_img=db.Column(db.String(200),nullable=False)
    content=db.Column(db.Text,nullable=True)
    status = db.Column(db.Integer, nullable=False,default=1)
    clicks = db.Column(db.Integer, nullable=False,default=500)
    create_time=db.Column(db.DATETIME,default=datetime.now)
    uid=db.Column(db.Integer,db.ForeignKey(Users.id))

以上表没有加 tablename属性,默认表名生成使用类名小写生成

其中用户表 是一的一方 要添加一个映射关系

articles=db.relationship('Article',backref='user') 这个是什么意思呢?

可以在进行连表查询的时候,用户表要取对应文章表中的数据,可以通过users模型中articles属性取到,相反如果查的是文章表你要获取对应的用户表中的信息你可以通过文章表中的users属性取到(有一个关键的就是文章表中的 外键------多的一方对应的添加一个外键将两张表关联起来  --不然backref='user')对应是查不到的哦。

看一下前台文章显示 页面

比如我要显示文章信息

 

不用说作者信息在user表文章信息是在文章表中我在后端是怎么查的呢?

通过这样的方式就可以查到,但是上面操作是没有原生中的连表哦,直接可以获取到的

看下模板中是如何遍历数据的?

 

 

 

创建模型语法

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值