flask flask-sqlalchemy sqlit3

news/2024/12/22 14:15:32/

这次是数据库使用,拒绝花哨主打就是一个简单

pip install flask-sqlalchemy

调用数据库现在配置里边设置下然后绑上APP后,定义数据结构类.下面是我认为最简单的数据库增删查改结构。


from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite3'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
##定义数据结构类
class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(80), unique=True, nullable=False)email = db.Column(db.String(120), unique=True, nullable=False)def __repr__(self):return '<User %r>' % self.username
## 如果没有表要创建表,有的话则无改动
with app.app_context():db.create_all()
##查询数据
@app.route("/sql")
def find_all_users():users = User.query.all()print(users)return render_template("sql.html", users=users)
##查询一个数据
@app.route("/get/<int:get_id>")
def get_by_id(get_id):get_user = User.query.get(get_id)  # User.query.filter_by(id=get_id).first()return "编号:{0},用戶名:{1},邮箱:{2}".format(get_user.id, get_user.username, get_user.email)
##增加数据
@app.route("/add/<username>")
def add_user(username):new_user = User()new_user.username = usernamenew_user.email = username + "@qq.com"db.session.add(new_user)db.session.commit()return redirect("/")
##删除数据
@app.route("/delete/<int:del_id>")
def delete_by_id(del_id):del_user = User.query.filter_by(id=del_id).first()if del_user is not None:db.session.delete(del_user)db.session.commit()return redirect("/")@app.route("/update", methods=["GET", "POST"])
def update():if request.method == "POST":user_id = request.form.get("id")new_username = request.form.get("username")new_email = request.form.get("email")user = User.query.get(user_id)if user:user.username = new_usernameuser.email = new_emaildb.session.commit()return redirect(url_for("update"))users = User.query.all()return render_template("update.html", users=users)

sql.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<table border="1"><tr><th>编号</th><th>用户名</th><th>邮箱</th><th>操作</th></tr>{% for u in users %}<tr><td>{{ u.id }}</td><td>{{ u.username }}</td><td>{{ u.email }}</td><td><a href="delete/{{ u.id }}">删除</a></td></tr>{% endfor %}
</table>

update.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Update User</title>
</head>
<body><table border="1"><tr><th>编号</th><th>用户名</th><th>邮箱</th></tr>{% for u in users %}<tr><td>{{ u.id }}</td><td>{{ u.username }}</td><td>{{ u.email }}</td></tr>{% endfor %}</table><h2>更新用户信息</h2><form action="/update" method="post"><label for="id">用户ID:</label><br><input type="text" id="id" name="id" required><br><label for="username">新用户名:</label><br><input type="text" id="username" name="username" required><br><label for="email">新邮箱:</label><br><input type="email" id="email" name="email" required><br><input type="submit" value="更新"></form>
</body>
</html>

补充内容数据迁移

安装

pip install flask-migrate

app 里边进行注册和绑定

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
from flask_migrate import Migrate
migrate =Migrate(app,db)

类似GIT的版本控制。流程为初始化(只执行一次)==》构建迁移脚本=》迁移

flask db init
flask db migrate
flask db upgrade

这脚本自动构建的时候经常自己出错需要打开排查


http://www.ppmy.cn/news/1298643.html

相关文章

《Think in Java》第一章:对象导论之访问控制

创建抽象数据类型&#xff08;类&#xff09;是面向对象程序设计的基本概念之一 创建某一类型的变量&#xff08;即对象实例&#xff09;&#xff0c;之后操作这些变量&#xff08;使用对象.调用&#xff09; 面向对象的挑战之一就是在问题空间的元素和解空间的对象建立映射关系…

C++中,Lambda表达式和std::function的作用及区别

Lambda表达式和std::function在C中都用于处理函数对象&#xff0c;但它们有不同的用途和使用场景。 Lambda表达式的作用是定义一个匿名函数&#xff0c;可以在需要函数对象的地方直接使用。Lambda表达式通常用于简短的函数逻辑&#xff0c;特别适合用于一些需要定义临时函数的…

DrGraph原理示教 - OpenCV 4 功能 - 直方图

OpenCV直方图是一种可以对整幅图的灰度分布进行整体了解的图示。它是带有像素值&#xff08;从0到255&#xff0c;不总是&#xff09;的图在X轴上&#xff0c;在y轴上的图像对应的像素个数。通过观察图像的直方图&#xff0c;我们可以直观的了解图像的对比度、亮度、亮度分布等…

DataGear专业版 1.0.0 发布,数据可视化分析平台

DataGear专业版 1.0.0 正式发布&#xff0c;欢迎大家试用&#xff01; http://datagear.tech/pro/ DataGear专业版 基于 开源版 开发&#xff0c;新增了诸多企业级特性&#xff0c;包括&#xff1a; MySQL、PostgreSQL、Oracle、SQL Server以及更多兼容部署数据库支持OAuth2…

Linux离线安装MySQL(rpm)

目录 下载安装包安装MySQL检测安装结果服务启停MySQL用户设置 下载安装包 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 下载全量包如&#xff1a;(mysql-8.1.0-1.el7.x86_64.rpm-bundle.tar) 解压&#xff1a;tar -xzvf mysql-8.1.0-1.el7.x86_64.…

二叉树基础oj练习(单值二叉树、相同的树、二叉树的前序遍历)

讲了这么多数据结构相关的知识(可以看我的数据结构文章专栏): 抓紧刷题巩固一下了 目录 1.单值二叉树 题目描述 思路1 代码1 思路2 代码2 2.相同的树 题目描述 思路 代码 3.二叉树的前序遍历 代码 思路 1.单值二叉树 965. 单值二叉树 - 力扣&#xff08;LeetCod…

SpringMVC SpringMVC 的入门

2.1.环境搭建 2.1.1.创建工程 2.1.2.添加web支持 右键项目选择Add framework support... 如果没有&#xff0c;可以参考idea2023版如何新建web项目 2.添加web支持 ​ 3.效果 ​ 注意&#xff1a; 不要先添加打包方式将web目录要拖拽到main目录下&#xff0c;并改名为…

Golang 结构体

前言 在 Go 语言中&#xff0c;结构体&#xff08;struct&#xff09;是一种自定义的数据类型&#xff0c;将多个不同类型的字段&#xff08;fields&#xff09;组合在一起 结构体通常用于模拟真实世界对象的属性和行为 定义结构体 可以使用 type 关键字和 struct 关键字来定…