在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/"就可以完成数据库 并且 成功写入数据

效果图为:

python flask怎么连接mysql python flask 数据库_数据库


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
自行幻想
表之间关联没有看懂 实际用法等到实际用到的时候在继续编写

以上为数据库总结回顾笔记 若侵权 请联系
我将第一时间删除并道歉 谢谢 !