Flask-SQLAlchemy的使用【一】

目录

前言

一.Flask-SQLAlchemy的安装

使用pip安装

二.构建DB对象

2.1什么是DB对象

2.2构建DB对象

2.3DB对象与Flask实例关联

将Flask实例作为参数传入

使用init_app()函数关联

三.配置DB对象的扩展

3.1SQLALCHEMY_DATABASE_URI

3.2SQLALCHEMY_ECHO

3.3SQLALCHEMY_TRACK_MODIFICATIONS

四.定义模型model

4.1模型model的作用

4.2定义格式

 4.3db.Column(数据类型)

4.4使用db模型创建db模型对象

4.5使用db模型创建/删除数据表

五.插入、更新、删除数据

5.1插入数据

5.2更新数据

5.3删除数据

前言

本次使用的Flask-SQLAlchemy版本为3.1,因此可能新增部分特性建议大家还是使用新版本吧,所谓用新不用旧

官方文档Flask-SQLAlchemy — Flask-SQLAlchemy Documentation (3.1.x)

一.Flask-SQLAlchemy的安装

使用pip安装

pip install Flask-SQLAlchemy

导入Flask-SQLAlchemy

注意,此时导入的时候与pip安装的名称略有不同:“字符全部为小写,且-变为_

from flask_sqlalchemy import *

二.构建DB对象

2.1什么是DB对象

在我们使用flask-sqlalchemy时,需要通过构造函数实例化一个db对象,之后对数据库的操作都基于这个db对象,可以理解为这个db对象就是主机与数据库的“一条链接

2.2构建DB对象

flask-sqlalchemy通过“SQLAlchemy()”构造函数来构建db对象,例如下面构建了一个db对象

from flask-sqlalchemy import SQLAlchemy

db = SQLAlchemy()

 SQLAlchemy内还有参数,在这里不做解释,感兴趣的可以查找官方文档

2.3DB对象与Flask实例关联

当我们构建一个db对象时,我们还需要将这个db对象与Flask实例关联,并且通过配置Flask中的参数来配置db对象的扩展,如果db对象不与一个Flask实例关联,那么该db对象将是“无效的

db对象与Flask实例关联有两种方法:“在构建db对象时将Flask实例作为参数传入”、“后续使用init_app()函数关联

将Flask实例作为参数传入

from flask import Flask
from flask-sqlalchemy import SQLAlchemy

app = Flask(__name__)

db = SQLAlchemy(app)

使用init_app()函数关联

from flask import Flask
from flask-sqlalchemy import SQLAlchemy

app = Flask(__name__)

db = SQLAlchemy()

#一些操作#

db.init_app(app)

三.配置DB对象的扩展

db对象的扩展通过修改flask实例的config属性来修改

db对象常用的扩展键有如下:

3.1SQLALCHEMY_DATABASE_URI

用于连接数据库的URL,可是字符串SQLAlchemy实例

一个URL例子:mysql+pymysql://scott:tiger@localhost/foo

URL由下面几部分组成:

  • 数据库种类(MySQL、Oracle等等)+python中对应的DBAPI(pymysql、mysqldb等等)[DBAPI可以省略此时就有SQLAlchemy用默认配置]mysql+pymysql
  • 分隔符“://
  • 用户名:密码
  • 分隔符:“@
  • 数据库地址,例如:“localhost”
  • 分隔符:“/
  • 数据库名称:例如在MySQL中我有“stu”、“test”、“foo”三个数据库,这里指的是数据库名字

3.2SQLALCHEMY_ECHO

用于在Python解释器中打印SQLAlchemy发出的连接和查询信息,便与调试

启用方法SQLALCHEMY_ECHO = True,默认为False(关闭)

3.3SQLALCHEMY_TRACK_MODIFICATIONS

该选项用来控制db对象与数据库数据保持一致默认情况下为False关闭,如果设置为True,在我们对数据库进行更新后,db对象中的(缓存)数据也会进行动态的更新,从而保持与数据库的数据一致性

启用方法SQLALCHEMY_TRACK_MODIFICATIONS = True

四.定义模型model

4.1模型model的作用

定义模型之后,我们可以很方便的创建模型对象,之后再对数据库进行操作时,便可使用模型对象操作,大大简化了书写提高了效率

除此之外,使用模型我们还可以很方便的创建一张或多张表

4.2定义格式

创建一个类,该类必须继承db对象的Model模型, 之后可以编辑这个类,“__tablename__”属性用来标识该模型的名字(创建表时的名字),如果没有指定将有flask-sqlalchemy随机指定

我们使用db.Column()方法来创建表中的一列

class User(db.Model):
    #设置表名
    __tablename__ = 'myuser'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    title = db.Column(db.String(128))
    text = db.Column(db.TEXT)
    create_time = db.Column(db.String(64))

一些参数说明

  • primary_key = True:主键(True表示主键,False表示不是主键)
  • autoincrement = True:自动递增
  • unique = True:唯一标识
  • nullable = True:允许空值,False不允许空值

 4.3db.Column(数据类型)

  • Integer:整数类型,对应MySQL里的int

  • String(Size):字符串类型,对应MySQL里的varchar(Size)

  • Text:长文本类型,对应MySQL里的text

  • DateTime:日期类型,对应MySQL里的datetime

  • Float:浮点数类型,对应MySQL里的float

  • Boolean:布尔类型,对应MySQL里的boolean

  • PickleType:存储为一个持久化的Python对象

  • LargeBinary:存储一个任意大的二进制数据

4.4使用db模型创建db模型对象

在创建好db模型之后,我们就可以创建db模型对象,之后可以对这个db模型对象进行操作,最后再将该模型提交即可实现数据库操作

import time
from flask_sqlalchemy import SQLAlchemy
from flask import *

app = Flask(__name__)

db = SQLAlchemy(app)

class User(db.Model):
    #设置表名
    __tablename__ = 'myuser'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    title = db.Column(db.String(128))
    text = db.Column(db.TEXT)
    create_time = db.Column(db.String(64))

create_time = time.strftime("%Y-%m-%d %H:%M:%S")
user = User(id=1,titile="Niubi",text="a4s56d46",create_time=create_time)

db.session.add(user)
db.session.commit()

该代码向数据库中的“myuser”表插入了一条“(1,"Niubi","a4s56d46","当前时间")”的记录

4.5使用db模型创建/删除数据表

代码如下:

#该操作将创建db对象下的所有模型类
db.create_all()
#例如我有两个模型类:“User”、“Study”,那么将会创建这两张表

不过该代码一般情况下无法运行,会出现报错,此时我们只需要添加“上下文关系”即可:

with app.app_context():
    db.create_all()

有创建就有删除,我们也可以使用“db.drop_all()”一次性删除数据库中的所有表

with app.app_context():
    db.drop_all()

五.插入、更新、删除数据

值得注意的是,在我们“插入、更新、删除数据,都应该使用“db.commit()”方法来提交操作,否则数据库将会丢失操作!!!

5.1插入数据

flask-sqlalchemy中,插入数据我们需要使用model模型,通过构造模型对象插入模型对象的方式,实现插入数据

例如:

import time
from flask_sqlalchemy import SQLAlchemy
from flask import *

app = Flask(__name__)

db = SQLAlchemy(app)

class User(db.Model):
    #设置表名
    __tablename__ = 'myuser'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    title = db.Column(db.String(128))
    text = db.Column(db.TEXT)
    create_time = db.Column(db.String(64))

create_time = time.strftime("%Y-%m-%d %H:%M:%S")
user = User(id=1,titile="Niubi",text="a4s56d46",create_time=create_time)

db.session.add(user)
db.session.commit()

5.2更新数据

更新数据,只需要对模型对象进行更改,再提交操作即可

例如:

#获取目标模型(记录)
user = User.query.filter(User.id == 1).first()
#修改值
user.id = 2
#提交操作
db.session.commit()

5.3删除数据

删除数据,需要使用“db.session.deleter()”方法删除模型对象,再提交操作即可

#查找目标模型(记录)
target_user = User.query.filter(User.id == 1).first()
#删除模型
db.session.delete(target_user)
#提交操作
db.session.commit()

相关推荐

  1. Flask-SQLAlchemy使用

    2024-05-25 20:54:24       16 阅读
  2. Python Flask 使用SQLAlchemy实现ORM管理

    2024-05-25 20:54:24       6 阅读
  3. Flask 系统教程 7】数据库使用 SQLAlchemy

    2024-05-25 20:54:24       7 阅读
  4. flask-sqlalchemy配置、字段说明

    2024-05-25 20:54:24       37 阅读
  5. python创建sqlite,并使用flask-sqlalchemy连接

    2024-05-25 20:54:24       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-25 20:54:24       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-25 20:54:24       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-25 20:54:24       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-25 20:54:24       18 阅读

热门阅读

  1. AWS存储之 Storage Gateway

    2024-05-25 20:54:24       12 阅读
  2. Kafka

    2024-05-25 20:54:24       11 阅读
  3. 大模型框架:vLLM

    2024-05-25 20:54:24       13 阅读
  4. react基础

    2024-05-25 20:54:24       8 阅读
  5. okcc呼叫中心如何创建语音群呼(通知)功能?

    2024-05-25 20:54:24       9 阅读