python flask基础总结 数据库

在web中 数据库的是重要的一环 承载着保存数据的重要性
数据库分为两种 sql关系型数据库 Nosql 非关系型数据库
sql关系型数据库
每一行代表一个记录 每个记录的列为一个字段
sql结构:
表 : 储存数据的结构
列 : 一个字段 代表存储信息的类型
行 : 一条记录
Nosql非关系型数据库
非关系型数据库 不使用表结构存储数据 应为速度快 可拓展性强被大型web项目广泛使用
二者各有千秋 这里我们学习的是sql关系型数据库 用的数据库类型为mysql

Flask-SQLAlchemy基础
准备 : pipenv flask-SQLAlchemy
导入 : from flask_sqlalchemy import SQLAlchemy
注册 : db = SQLAlchemy(app)
flask 连接每个数据库都要有一个uri
一般数据库uri 的格式为 数据库://username:password@host/数据库名
在这里mysql我的mysql uri为 mysql://username:password@host/database
定义数据库模型
数据库模型常用字段类型

字段类型说明
Integer整数
String字符串
Text文本
Date日期
Time时间
DateTime日期时间
Interval时间间隔 时间戳
Float浮点数
Boolean布尔
PickleType序列化对象
LargeBinary二进制数据

String需要传入参数 限制长度 Text 类型虽然好用 不限制长度 但是为了性能考虑最好使用String 仅在特定情况下使用Text
SQLAlchemy 字段参数

参数内容
primary_key主键
unique字段不允许重复
index字段创建索引 提高查询效率
nullable字段口否为空 True 为非空
default默认值

下面我们定义一个表模型

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config.from_object('setting')  # 这里写了数据库的基本配置
db = SQLAlchemy(app)


class User(db.Model):  # 传入参数
    __tablename__ = 'user'  # 自定义表名 不设置为User的小写
    id = db.Column(db.Integer, primary_key=True)  # 定义字段 id设置主键约束
    name = db.Column(db.String(10), nullable=False)  # 定义name字段 不能空
    age = db.Column(db.Integer, nullable=False)  # 定义age字段


db.create_all()  # 创建数据库
print('数据库创建成功')

一切定义完成之后 只要使用
db.create_all( )就可以完成数据库的创建
db.drop( ) 删除数据库
在生产中会遇到重用的操作 我们可以编写使用方法
数据库操作
数据库操作有 create(创建) read(读取) update(更新) delete(删除)
1.create 创建
顺序为 :
创建python对象 : user = User(name=‘tom’,age=18)
添加到会话中 : db.session.add_all( )
提交会话 : db.session.commit( )
2.read 读取
读取方法为:
<模型类>.query.<过滤方法>.<查询方法>
过滤方法为:

过滤方法说明
filter( )使用规则判断返回符合条件的记录
filter_by( )使用参数传入 符合条件则返回
ord_by( )对记录进行排序
limit( )限制数量
group_by( )分组 查询
offset( )偏移查询结果

filter( ) 和 filter_by( ) 方法非常相似 但是filter_by( ) 更利于使用 只需要传入字段就可以了

查询方法为:

查询方法说明
all( )所有的查询记录
first( )查询的第一条记录
one( )返回仅允许1条记录 如果不为1 则抛出错误
get( id)传入主键作为参数 查询记录 未找到为None
count( )返回查询结果的数量
one_or_none( )类似one( ) 但是如果不为1 则返回none
first_or_404( )查询第一条 没找到则抛出404
get_or_404( id )传入id查询 如果没找到则抛出404

3.update 更新数据库数据
只需要给参数赋值 然后commit提交就可以更新数据库
例 : name = User.query.get( 1 )
name.user = ‘liutao’
db.session.commit( )
这里不需要用add添加 因为本身就处于回话中 所以不需要添加
4.delete 删除记录
只需要删除参数 然后提交就可以了

user = User.query.get( 1 )
db.session.delete( id ) 删除主键为1的所有记录
函数中操作数据库

1.create

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config.from_object('setting')  # 这里写了数据库的基本配置
db = SQLAlchemy(app)


class User(db.Model):  # 传入参数
    __tablename__ = 'user'  # 自定义表名 不设置为User的小写
    id = db.Column(db.Integer, primary_key=True)  # 定义字段 id设置主键约束
    name = db.Column(db.String(10), nullable=False)  # 定义name字段 不能空
    age = db.Column(db.Integer, nullable=False)  # 定义age字段


db.create_all()  # 创建数据库
print('数据库创建成功')


@app.route('/')
def hello():
    user = User(name='tom', age=18)
    db.session.add(user)
    db.session.commit()
    return '写入数据成功'


if __name__ == '__main__':
    app.run()

这时只要访问 "http://127.0.0.1:5000/"就可以完成数据库 并且 成功写入数据
效果图为:
在这里插入图片描述
2.read
我们这里查 数据库数据 然后在网页中显示出来

@app.route('/read/')
def read():
    user = User.query.all()  # 这里返回的是列表  所有要遍历
    for user in user:
        name = user.name
        age = user.age
        return f'{name}  {age}'  # 返回数据  这里有个bug 只能返回一次  但是我就不调 任性

这里访问http://127.0.0.1:5000/read/ 就可以得出数据库的数据
3.update
更新数据效果和以上一样 只要在代码中实现
给参数赋值 然后commit提交就可以更新数据库
4.delete
自行幻想
表之间关联没有看懂 实际用法等到实际用到的时候在继续编写

以上为数据库总结回顾笔记
资料来源于李辉-flask开发实战 若侵权 请联系
qq : 1759435876
微信 : 17711405764
我将第一时间删除并道歉 谢谢 !

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值