当前位置: 首页 > news >正文

【python】flask结合SQLAlchemy,在视图函数中实现对数据库的增删改查

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,面试宝典等分享。

所属的专栏:flask框架零基础,进阶应用实战教学
景天的主页:景天科技苑

文章目录

  • flask项目中数据库连接设置
    • 数据库基本操作
    • 模型类定义
  • flask中数据表操作
    • 创建和删除表
    • 数据操作
      • 添加一条数据
      • 添加多条数据
      • 更新操作
      • 删除操作
  • 关于数据库锁
  • 总结

上一章,我们学到了在python中怎么使用SQLAlchemy来操作数据库,在工作中,我们经常结合flask来操作数据库。本章我们来一起深入探讨下!!!

flask项目中数据库连接设置

  • 在 Flask-SQLAlchemy 中,数据库的链接配置信息使用URL指定,而且程序使用的数据库必须保存到Flask的 SQLALCHEMY_DATABASE_URI 配置项中

manage.py,代码:

# SQLAlchemy的链接配置:"数据库名://账户名:密码@服务器地址:端口/数据库名称?配置参数选项"
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:123@127.0.0.1:3306/flaskdemo?charset=utf8mb4"# 如果不使用mysqldb改用pymysql,则需要在连接时指定pymysql
# app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:Jin*******7!@10.10.0.52:3306/students?charset=utf8mb4"

其他设置项:

# 动态追踪修改设置,如未设置只会提示警告
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
# 查询时会显示原始SQL语句
app.config["SQLALCHEMY_ECHO"] = True

常用的SQLAlchemy字段类型与python数据类型对照
在这里插入图片描述

常用的SQLAlchemy列约束选项
在这里插入图片描述

数据库基本操作

  • 在SQLAlchemy中,添加、修改、删除操作,均由数据库会话(sessionSM)管理。
    • 会话用 db.session 表示。在准备把数据写入数据库前,要先将数据添加到会话中然后调用 db.session.commit() 方法提交会话。
  • 在SQLAlchemy 中,查询操作是通过 query 对象操作数据。
    • 最基本的查询是返回表中所有数据,也可以通过filter或filter_by过滤器进行更精确的数据库查询。

模型类定义

我们后面会把模型创建到单独的文件中,但是现在我们先把模型类写在main.py文件中。

from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)
# 连接数据库连接url
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:Jinghao31357!@10.10.0.52:3306/students?charset=utf8mb4"
# 动态追踪修改设置,如未设置只会提示警告
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
# 查询时会显示原始SQL语句
app.config["SQLALCHEMY_ECHO"] = True# 把SQLAlchemy组件注册到项目中
db = SQLAlchemy()
db.init_app(app)#创建模型类
class Student(db.Model):"""学生信息模型"""#下面的字段配置相当于执行sql语句如下"""CREATE TABLE tb_student2 (id INTEGER NOT NULL COMMENT '主键' AUTO_INCREMENT, name VARCHAR(15) COMMENT '姓名', age SMALLINT COMMENT '年龄', sex BOOL COMMENT '性别', email VARCHAR(128) COMMENT '邮箱地址', money NUMERIC(10, 2) COMMENT '钱包', PRIMARY KEY (id), UNIQUE (email))"""# 声明与当前模型绑定的数据表名称__tablename__ = "tb_student2"id = db.Column(db.Integer, primary_key=True, comment="主键")name = db.Column(db.String(15), index=True, comment="姓名")age = db.Column(db.SmallInteger, comment="年龄")sex = db.Column(db.Boolean, default=True, comment="性别")email = db.Column(db.String(128), unique=True, comment="邮箱地址")money = db.Column(db.Numeric(10, 2), default=0.0, comment="钱包")def __repr__(self):  # 相当于django的__str__return f"{self.name}<{self.__class__.__name__}>"class Course(db.Model):"""课程模型""""""CREATE TABLE tb_course (id INTEGER NOT NULL COMMENT '主键' AUTO_INCREMENT, name VARCHAR(255) COMMENT '课程', price NUMERIC(8, 2) COMMENT '价格', PRIMARY KEY (id), UNIQUE (name))"""__tablename__ = "tb_course"id = db.Column(db.Integer, primary_key=True, comment="主键")name = db.Column(db.String(255), unique=True, comment="课程")price = db.Column(db.Numeric(8, 2), comment="价格")def __repr__(self):  # 相当于django的__str__return f"{self.name}<{self.__class__.__name__}>"class Teacher(db.Model):"""老师模型""""""CREATE TABLE tb_teacher (id INTEGER NOT NULL COMMENT '主键' AUTO_INCREMENT,name VARCHAR(255) COMMENT '姓名',`option` ENUM('讲师','助教','班主任'),PRIMARY KEY (id),UNIQUE (name))"""__tablename__ = "tb_teacher"id = db.Column(db.Integer, primary_key=True, comment="主键")name = db.Column(db.String(255), unique=True, comment="姓名")option = db.Column(db.Enum("讲师", "助教", "班主任"), default="讲师")def __repr__(self):return f"{self.name}<{self.__class__.__name__}>"if __name__ == '__main__':#要想执行创建表,需要调用db.creat_all(),db要想被调用,需要放到app上下文里面with app.app_context():# 如果没有提前声明模型中的数据表,则可以采用以下代码生成数据表,# 如果数据库中已经声明了有数据表,则不会继续生成db.create_all()app.run(debug=True)

在这里插入图片描述

flask中数据表操作

创建和删除表

创建表

# 在视图内调用:
@app.route("/create")
def create_table():db.create_all() # 为项目中被识别的所有模型创建数据表return "ok"# 在视图以外的地方调用:
with app.app_context():# create_all()方法执行的时候,需要放在模型的后面# 检测数据库中是否存在和模型匹配的数据表。# 如果没有,则根据模型转换的建表语句进行建表。# 如果找到,则不会进行额外处理db.create_all()

删除表

# 在视图内调用:
@app.route("/drop")
def drop_table():db.drop_all()   # 为项目中被识别的所有模型删除数据表return "ok"# 在视图以外的地方调用:with app.app_context():db.drop_all()  # 慎用,很给力的!!这表示删除数据库中所有模型对应的表。

数据操作

添加一条数据

#在视图函数中实现增删改查
@app.route("/data")
def data():"""添加数据"""# # 添加一条数据student = Student(name="小明",age=17,sex=True,email="xiaoming@qq.com",money=30.50)db.session.add(student)db.session.commit()return "ok"

get请求访问data路径
在这里插入图片描述

可以看到数据已被添加到表中
在这里插入图片描述

添加多条数据

student_list = [Student(name="小黑", age=16, sex=True, email="xiaohei@qq.com", money=1000),Student(name="小红", age=15, sex=False, email="xiaohong@qq.com", money=1200),Student(name="小兰", age=11, sex=True, email="xiaolan@qq.com", money=600),Student(name="小白", age=21, sex=False, email="xiaobai@qq.com", money=2900),
]
db.session.add_all(student_list)
db.session.commit()

在这里插入图片描述

查看数据库
在这里插入图片描述

更新操作

更新一条数据


student = Student.query.get(3)
student.age = 18
db.session.commit()

更新之前,我们先看下3号的年龄
在这里插入图片描述

浏览器访问后查看
在这里插入图片描述

可见年龄被修改成18
在这里插入图片描述

更新多条数据

Student.query.filter(Student.sex == True).update({Student.money: Student.age * 100,
})
db.session.commit()

在这里插入图片描述

可见sex为True的money改成了年龄乘以100
在这里插入图片描述

删除操作

删除一条数据

student = Student.query.get(5)
db.session.delete(student)
db.session.commit()

在这里插入图片描述

id为5的数据被删除
在这里插入图片描述

删除多条数据

Student.query.filter(Student.sex==False).delete()
db.session.commit()

删之前先看看数据库表数据
在这里插入图片描述

浏览器访问/data
在这里插入图片描述

查看数据库,sex为False的全部被删除
在这里插入图片描述

完整代码:

from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)
# 连接数据库连接url
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:Jinghao31357!@10.10.0.52:3306/students?charset=utf8mb4"
# 动态追踪修改设置,如未设置只会提示警告
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
# 查询时会显示原始SQL语句
app.config["SQLALCHEMY_ECHO"] = True# 把SQLAlchemy组件注册到项目中
db = SQLAlchemy()
db.init_app(app)#创建模型类
class Student(db.Model):"""学生信息模型"""# 声明与当前模型绑定的数据表名称__tablename__ = "tb_student2"id = db.Column(db.Integer, primary_key=True, comment="主键")name = db.Column(db.String(15), index=True, comment="姓名")age = db.Column(db.SmallInteger, comment="年龄")sex = db.Column(db.Boolean, default=True, comment="性别")email = db.Column(db.String(128), unique=True, comment="邮箱地址")money = db.Column(db.Numeric(10, 2), default=0.0, comment="钱包")def __repr__(self):  # 相当于django的__str__return f"{self.name}<{self.__class__.__name__}>"class Course(db.Model):"""课程模型"""__tablename__ = "tb_course"id = db.Column(db.Integer, primary_key=True, comment="主键")name = db.Column(db.String(255), unique=True, comment="课程")price = db.Column(db.Numeric(8, 2), comment="价格")def __repr__(self):  # 相当于django的__str__return f"{self.name}<{self.__class__.__name__}>"class Teacher(db.Model):"""老师模型"""__tablename__ = "tb_teacher"id = db.Column(db.Integer, primary_key=True, comment="主键")name = db.Column(db.String(255), unique=True, comment="姓名")#枚举类型option = db.Column(db.Enum("讲师", "助教", "班主任"), default="讲师")def __repr__(self):return f"{self.name}<{self.__class__.__name__}>"#在视图函数中实现增删改查
@app.route("/data")
def data():"""添加数据"""# # 添加一条数据# student = Student(#     name="小明",#     age=17,#     sex=True,#     email="xiaoming@qq.com",#     money=30.50# )# db.session.add(student)# db.session.commit()# # 添加多条数据# student_list = [#     Student(name="小黑", age=16, sex=True, email="xiaohei2@qq.com", money=1000),#     Student(name="小红", age=15, sex=False, email="xiaohong2@qq.com", money=1200),#     Student(name="小兰", age=11, sex=True, email="xiaolan2@qq.com", money=600),#     Student(name="小白", age=21, sex=False, email="xiaobai2@qq.com", money=2900),# ]# db.session.add_all(student_list)# db.session.commit()"""更新操作"""# # 更新一条数据# student = Student.query.get(3)# student.age = 18# db.session.commit()# 更新多条数据# Student.query.filter(Student.sex == True).update({#     Student.money: Student.age * 100,# })# db.session.commit()"""删除操作"""# # 删除一条数据# student = Student.query.get(5)# db.session.delete(student)# db.session.commit()# # 删除多条数据Student.query.filter(Student.sex==False).delete()db.session.commit()return "ok"if __name__ == '__main__':#要想执行创建表,需要调用db.creat_all(),db要想被调用,需要放到app上下文里面with app.app_context():# 如果没有提前声明模型中的数据表,则可以采用以下代码生成数据表,# 如果数据库中已经声明了有数据表,则不会继续生成db.create_all()app.run(debug=True)

关于数据库锁

悲观锁,是属于数据库中的一种互斥锁机制,但是乐观锁并非真正的数据库锁。
2种锁都是数据库在应对并发操作时,防止出现资源抢夺的,基于不同人生观所实现2种解决方案。
悲观锁的基本使用:
>>> 数据库终端开始

begin;  -- 开启事务
select * from db_student where student_id = 5 for update; -- 添加一把更新锁【悲观锁】
....    -- 在事务提交之前,任何第三方连接都不能修改 student_id = 5这条数据 
update from db_student set age = 16 where student_id = 5;
commit; -- 提交事务<<< 数据库终端开始

悲观锁的问题:

  1. 提前锁定数据,形成串行化,形成阻塞,不利于性能发挥,不适用高并发场景。
  2. 悲观锁只能保证数据的一致性,不能保证脏数据的出现

乐观锁的出现就是为了解决悲观锁的问题。
举例:双11活动,商城里面id=5的商品的库存num=10了,现在我们要基于乐观锁和悲观锁来解决下单过程中,出现的资源抢夺现象,避免出现超卖(商品数量不能为负数)。

乐观锁:
—> begin; 开启事务
—> 先查看库存,记录当前库存 original_num=10
—> 进行下单操作,买6件
—> 付款
—> 扣除库存 update goods set num=num-6 where num=original_num and id=5; # 增加更新条件,判断库存是否还是原来
如果执行成功,则表示没有人抢,购买成功
—> commit;
如果执行失败,则表示已经有人先抢购
—> rollback;

悲观锁:
—> begin; 开启事务
—> 先给id=5的数据,加锁
select * from goods where id=5 for update;
—> 进行下单操作,买6件
—> 付款
—> 扣除库存 update from goods set num=num-6 where id=5;
—> 执行成功解锁
—> commit; 提交事务

总结

本文详述了在flask项目中结合SQLAlchemy操作mysql数据库的详细用法,非常实用,感兴趣的朋友可以一键三连,flask的高阶用法持续更新中!!!

相关文章:

【python】flask结合SQLAlchemy,在视图函数中实现对数据库的增删改查

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

APIGateway的认证

APIGateway的支持的认证如下&#xff1a; 我们从表格中可以看到&#xff0c;HTTP API 不支持资源策略的功能&#xff0c;另外是通过JWT的方式集成Cognito的。 对于REST API则是没有显示说明支持JWT认证&#xff0c;这个我们可以通过Lambda 自定义的方式来实现。 所以按照这个…...

MacOS Github Push项目 精简版步骤

大白菜教程&#xff1a;小白菜 macOS github提交代码-CSDN博客 步骤1&#xff1a;git init步骤2&#xff1a; touch .gitignore 创建ignore文件 open .gitignore 打开ignore文件 编写ignore文件.idea/ 是文件夹的意思.git/ 也是自动生成的文件夹 也不上传.DS_St…...

Eclipse的基本使用讲解(建项目,建包,建类,写代码(基本语法))新手入门必备

目录 一.介绍eclipse 二.操作Eclipse 1.选择工作空间 2.建项目&#xff0c;建包&#xff0c;建类 1.建项目(两种) 2.建包 3.建类 三.写代码(基本语法) 1.代码操作 2.代码规范 3.代码注释 一.介绍eclipse Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其…...

3D模型处理的并行化

今天我们将讨论如何使用 Python 多进程来处理大量3D数据。 我将讲述一些可能在手册中找到的一般信息&#xff0c;并分享我发现的一些小技巧&#xff0c;例如将 tqdm 与多处理 imap 结合使用以及并行处理存档。 那么我们为什么要诉诸并行计算呢&#xff1f; 使用数据有时会出现…...

盲人安全导航技巧:科技赋能让出行更自如

作为一名资深记者&#xff0c;长期关注并报道无障碍领域的发展动态。今日&#xff0c;我将聚焦盲人安全导航技巧&#xff0c;探讨这一主题下科技如何赋能视障人士实现更为安全、独立的出行。一款融合了实时避障、拍照识别物体及场景功能的盲人出行辅助应用叫做蝙蝠避障&#xf…...

问,由于java存在性能上,以及部分功能上的缺点,请问如何正确使用C,C++,Go,这三个语言,提升Java Web项目的性能?

拓展阅读&#xff1a;版本任你发&#xff0c;我用java8 我明白Java虽然在许多方面表现出色&#xff0c;但在某些特定场景下可能会遇到性能瓶颈或功能限制。为了提升Java Web项目的性能&#xff0c;可以考虑将C、C和Go这三种语言用于特定的组件或服务。以下是如何正确使用这些语…...

【信号与系统 - 9】傅里叶变换的性质习题

1 习题 已知 f ( t ) f(t) f(t) 的傅里叶变换为 F ( j w ) F(jw) F(jw) &#xff0c;求如下信号的傅里叶变换 &#xff08;1&#xff09; t ⋅ f ( 3 t ) t\cdot f(3t) t⋅f(3t) 解&#xff1a; f ( 3 t ) ↔ 1 3 F ( j w 3 ) f(3t)\leftrightarrow \frac{1}{3}F(j\frac{w}…...

C#探索之路基础夯实篇(5):语法糖概念解析

C#探索之路基础夯实篇(5)&#xff1a;语法糖概念解析 文章目录 C#探索之路基础夯实篇(5)&#xff1a;语法糖概念解析1、概念定义2、Lua中的语法糖3、C#中的语法糖4、C中的语法糖5、优缺点辨析6、适用范围7、总结 从之前一开始接触lua的时候开始&#xff0c;开始第一次接触到语法…...

SeaTunnel 与 DataX 、Sqoop、Flume、Flink CDC 对比

产品概述 Apache SeaTunnel 是一个非常易用的超高性能分布式数据集成产品,支持海量数据的离线及实时同步。每天可稳定高效同步万亿级数据,已应用于数百家企业生产,也是首个由国人主导贡献到 Apache 基金会的数据集成顶级项目。 SeaTunnel 主要解决数据集成领域的常见问题:…...

深入理解汇编:平栈、CALL和RET指令详解

​视频学习下载地址&#xff1a;​​https://pan.quark.cn/s/04e6946a803a​​ 汇编语言以其接近硬件的特性和高效的执行速度&#xff0c;在系统编程、性能优化和逆向工程中占有不可或缺的地位。本文将深入探讨汇编语言中的平栈操作以及​​CALL​​​和​​RET​​指令&#…...

DP4 最小花费爬楼梯

原题链接&#xff1a;最小花费爬楼梯_牛客题霸_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 dp。 开一个dp数组和a数组。dp[i]表示在当前这一格所需要的费用&#xff0c;a数组其实就是题目中的cost数组。 因为最后要求到顶楼的最低费用&a…...

OpenXR API概览与核心组件解析

在虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;领域&#xff0c;OpenXR API提供了一个重要的开放标准&#xff0c;使得开发者能够跨多种硬件和软件平台创建兼容的应用。本文将详细解释OpenXR中的核心组件和数据结构&#xff0c;并探讨它们如何共同…...

安装指定版本的ant-design-vue和指定版本的@ant-design/icons-vue 图标组件包

前言&#xff1a; 最近在完成公司的项目时&#xff0c;为了兼容其他的版本&#xff0c;需要安装指定版本的ant-design-vue和ant-design/icons-vue 图标组件包&#xff0c;安装成功之后&#xff0c;分享如下&#xff1a; 安装命令&#xff1a; ant-design-vue&#xff1a; 不…...

Zynq7000系列中的休眠模式

休眠模式是在系统层面定义的&#xff0c;它包括将APU置于待机模式&#xff0c;并将多个控制器保持在无时钟的复位状态。 进入休眠模式可以大大降低功耗。在休眠模式下&#xff0c;大多数功能时钟组都会被关闭或断电。唯一需要保持活动的设备是一个CPU、窥探控制单元&#xff08…...

在redhat7/8平台上部署ELK7.17.18的技术方案

部署环境说明 为节省资源直接使用1台测试机模拟3节点elasticsearch服务集群做部署&#xff0c;在该主机上同时部署了3个elasticsearch实例、1个logstash实例、1个kibana实例、1个filebeat实例。对于生产环境&#xff0c;以上实例服务应该做分布式部署。 ELK-TEST1 192.168.10…...

(Chat For Al,创新Al,汇语Al助手,AiTab新标签,万能助手,LLaVA)分享6个好用的ChatGPT

目录 1、Chat For AI 2、创想AI 3、汇语AL助手...

MySQL-锁篇

文章目录 表级锁和行级锁了解吗&#xff1f;有什么区别&#xff1f;行级锁使用有什么注意事项&#xff1f;InnoDB有哪几类行锁&#xff1f;共享锁和排他锁是什么&#xff1f;意向锁有什么用&#xff1f; 锁是一种常见的并发事务的控制方式 表级锁和行级锁了解吗&#xff1f;有什…...

滤波器笔记(杂乱)

线性相位是时间平移&#xff0c;相位不失真 零、基础知识 1、用相量表示正弦量 https://zhuanlan.zhihu.com/p/345546880 https://www.zhihu.com/question/347763932/answer/1103938667 A s i n ( ω t θ ) ⇔ A e j θ ⇔ A ∠ θ Asin(\omega t\theta) {\Leftrightarrow…...

【ARFoundation自学01】搭建AR框架,检测平面点击位置克隆物体

Unity开发ARFoundation相关应用首先安装ARFoundation包 然后设置XR 1.基础AR场景框架搭建 2.一个基本的点击克隆物体到识别的平面脚本 挂在XROrigin上 脚本AppController 脚本说明书 ## 业务逻辑 AppController 脚本旨在实现一个基本的 AR 应用程序功能&#xff1a;用户通过…...

.Net ajax 接收参数

后端部分代码 一般处理程序 public void ProcessRequest(HttpContext context){context.Response.ContentType "text/plain";string str_index context.Request.Form.AllKeys.Contains("index") ? context.Request.Form["index"].ToString(…...

智能零售:引领购物新时代

智能零售通过整合人工智能、物联网、大数据和机器学习等技术&#xff0c;正在彻底改变传统的购物模式&#xff0c;为消费者和零售商提供前所未有的效率和个性化体验。 智能零售利用消费者数据分析来提供个性化的购物推荐。无论是在线平台或是实体店内&#xff0c;智能系统都能…...

【AIGC】AIGC在虚拟数字人中的应用:塑造未来互动体验的革新力量

&#x1f680; &#x1f680; &#x1f680;随着科技的快速发展&#xff0c;AIGC已经成为引领未来的重要力量。其中&#xff0c;AIGC在虚拟数字人领域的应用更是引起了广泛关注。虚拟数字人作为一种先进的数字化表达形式&#xff0c;结合了3D建模、动画技术、人工智能等多种先进…...

电机控制器电路板布局布线参考指导(五)

电机控制器电路板布局布线参考指导&#xff08;五&#xff09;大容量电容和旁路电容的放置 1.大容量电容的放置2.电荷泵电容器3.旁路电容/去耦电容的放置3.1 靠近电源3.2 靠近功率器件3.3 靠近开关电流源3.4 靠近电流感测放大器3.5 靠近稳压器 tips&#xff1a;资料主要来自网络…...

Python医院挂号脚本

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 python数据分析…...

LabVIEW光学探测器板级检测系统

LabVIEW光学探测器板级检测系统 特种车辆乘员舱的灭火抑爆系统广泛采用光学探测技术来探测火情。光学探测器作为系统的关键部件&#xff0c;其探测灵敏度、响应速度和准确性直接关系到整个系统的运行效率和安全性。然而&#xff0c;光学探测器在长期使用过程中可能会因为灰尘污…...

女上司问我:误删除PG百万条数据,可以闪回吗?

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验 擅长主流数据Oracle、MySQL、PG、openGauss运维 备份恢复&#xff0c;安装迁移&#xff0c;性能优化、故障应急处理等可提供技术业务&#xff1a; 1.DB故障处理/疑难杂症远程支援 2.Mysql/PG/Oracl…...

HarmonyOS4-数据持久化

轻量级preferences&#xff1a; 关系型数据库&#xff1a; 增删改&#xff1a; 查询语句&#xff1a; 具体详情代码可参与源码&#xff1a; 黑马大佬写的。 harmonyos-lessons: 黑马程序员B站HarmonyOS课程的基础篇代码部分...

深度学习的社交网络:用户行为分析

1.背景介绍 社交网络是当今互联网的一个重要领域,它们为人们提供了一种快速、便捷的方式来与他人交流、分享信息和建立社交关系。社交网络的数据量巨大,包括用户的个人信息、互动记录、内容等。这些数据为企业和组织提供了丰富的信息来源,可以用于用户行为分析、推荐系统、…...

Python 使用 pip 安装 matplotlib 模块(精华版)

pip 安装 matplotlib 模块 1.使用pip安装matplotlib(五步实现):2.使用下载的matplotlib画图: 1.使用pip安装matplotlib(五步实现): 长话短说&#xff1a;本人下载 matplotlib 花了大概三个半小时屡屡碰壁&#xff0c;险些暴走。为了不让新来的小伙伴走我的弯路&#xff0c;特意…...

做网站需要用到什么/今天的新闻联播

/* * 创建人&#xff1a;李要南 * 创建时间&#xff1a;2008-12-7 4:22 * 说明&#xff1a;新闻类别表业务类 * 版权所有&#xff1a;李要南 */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System…...

wordpress load.php/企业网站seo多少钱

点击查看全文 CopyTable是Hbase提供的一个数据同步工具&#xff0c;可以用于同步表的部分或全部数据。本文介绍如何使用CopyTable同步HBase数据。针对没有hadoop集群的用户&#xff0c;还介绍了单机运行CopyTable的配置和参数。 根据我们的测试&#xff0c;在表不压缩的情况下&…...

我的世界做皮肤网站/北京网站优化seo

LeetCode 206: 反转链表 &#x1f499; 解题思路&#xff1a; &#xff08;1&#xff09;通过方法的返回值为ListNode知道并不是要简单的逆序输出链表的值&#xff0c;而是通过改变next域来创建逆序链表 &#xff08;2&#xff09;要记得将原来的头结点的next域指向空&#x…...

产品推广方案有哪些/金华百度seo

在开发项目时&#xff0c;对EditText 做了OnKey事件的监听 &#xff0c;但总是会触发两次&#xff01; 后来查阅很多资料后发现&#xff0c;Key有Down和Up事件&#xff0c;所以会执行两次。 解决方法&#xff1a;捕获UP 或DWON的其中一种 etTMH.setOnKeyListener(new OnKey…...

网站affiliate怎么做?/网站建设哪个公司好

题目&#xff1a;如何在View中写一个超级连接连接到主页&#xff1f; 这个问题看起来很好回答&#xff1a; <a href"/home/index">首页</a> 其实上面这种不能称之为方案的写法其实是最好的&#xff0c;没有调用任何的方法&#xff0c;仅用纯的HTML就解决…...

wordpress分类文章/微信运营方案

儿子开学要上二年级了,每天数学做业的都要家长出一些口算题.今天写了一个程序可以出题并打印.自已对.net打印这部分不是很熟&#xff0e;现在只能打印单页&#xff0e;请哪位高手帮我改一下能打印多页&#xff0e;usingSystem;usingSystem.Collections.Generic;usingSystem.Com…...