IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> flask ORM(对象关系映射): Flask-SQLAlchemy 单表(增删改查) -> 正文阅读

[Python知识库]flask ORM(对象关系映射): Flask-SQLAlchemy 单表(增删改查)

在Flask-web中使用原生的SQL语句操作数据库可能会枯燥乏味,因为它本身也是很长的一段代码,这无形中增加了我们的代码量。

所以在Flask中为我们提供了一个数据包叫做Flask-SQLAlchemy它为开发人员提供了很强的灵活性,因为它集成了SQL的全部功能。可能一个多表查询语言原生SQL要写20个甚至30个字符,它10个就搞定了。

ORM:对象关系映射用简单的话来讲就是通过创建类的方式来创建表,我们开发人员用它规定的语法来创建表,它就会生成复杂的SQL语句

接下来我们用SQLAlchemy来创建一个User用户表

from flask import Flask
from flask_sqlalchemy import SQLAlchemy


class Config:
    SQLALCHEMY_DATABASE_URI = 'mysql://root:123456@127.0.0.1:3306/csdn'  # 数据库连接地址
    SQLALCHEMY_TRACK_MODIFICATIONS = False  # 取消动态最终


app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(30), nullable=False)
    age = db.Column(db.Integer, nullable=False)
    phone_num = db.Column(db.Integer, nullable=False)


@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


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

我们可以看到首先是导入数据包,再之后我会创建一个Config的类,它里面都是存放一些配置信息,这其中的两个配置信息是导入SQLAlchemy必须要的,不然会有警告提醒。

SQLALCHEMY_DATABASE_URI 这是指定数据库的位置和表的位置

连接数据库://用户名:密码@主机地址:端口号/数据库名

这是一个连接的格式,我用的mysql所以连接的是msyql

?SQLALCHEMY_TRACK_MODIFICATIONS 这是是否开启动态追踪的意思,我们一般都是把他写为False

?下面的User就是用对象创建一个表,首先这个表就要继承db.Model,表明这不是一个普通的类,

?里面就是表的字段名和字段的类型。

?像这里我定义了一个字段叫id、类型是Integer、primary_key是否设为主键、autoincrement是否? ? ?自增,这就是我设置第一个id字段。

这其中字段还有很多类型如:String,Text,Float,Boolean

最后在run之前?db.create_all() 创建所有的表,创建表就完成了。

下面是我在表里创建几个人的信息,我们来操作一下它

一、查询?

?比如有一个要求,我要查询王老五的id值,我只知道他叫王老五。

    res = User.query.filter_by(name='王老五').first().id
    print(res)

这就是一个查询语言,首先我要找User表里面的王老五,所以先写一个User,再是query查询,然后用filter_by过滤指定名字是王老五,再然后first生成一个对象,最后点它的id就拿到了王老五的id

所以把查询语言分解一下 ,如下就是查询语言的分解结构

模型类名.query.过滤器.查询执?行行器?

?二、增加

又来了一个要求,我要增加一个人,她叫王小美,18岁,手机号991。

    # 第一个方法
    new = User()
    new.name = '王小美'
    new.age = 18
    new.phone_num = 99
    db.session.add(new)
    db.session.commit()
    new = User(name='王小美', age=18, phone_num=991)
    db.session.add(new)
    db.session.commit()

一共有两种添加方式,第一个是先实例化,再用点属性的方式赋值,再添加最后提交。

第二是实例化时就给他传了参数。这两种方法都可以不过最后都要先添加再提交上去才有数据。

三、修改

比如我要把王老五的手机号修改成520

    res = User.query.filter_by(name='王老五').first()
    res.phone_num = 520
    db.session.commit()

我们还是要首先把王老五找到,生成个对象,在用点属性的方式把他的手机号修改了

?

四、删除?

最后我们把王小美这个人删除了,就把王小美这个人的所有有关数据都删除了

    res = User.query.filter_by(name='王小美').first()
    db.session.delete(res)
    db.session.commit()

和修改差不多都要先找到王小美这个人再生成一个对象,再用delete这个方法把这个对象删除

?这就是关于单表操作的增删改查,欢迎转载

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:35:34  更:2022-05-18 17:37:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:39:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码