Python_Flask02

所有人都不许学Java了,都来学Python!

如果不来学的话请网爆我的老师

连接前的准备

安装pymysql 和 flask_sqlalchemy,安装第三下面两个所需要的包才能连接上数据库

pip install pymysql pip install flask_sqlalchemy  

pymysql是一个Python模块,它可以用作一个独立的Python文件或作为Python程序中的一个模块。安装pymysql之后,需要导入它并连接到一个MySQL数据库,以开始与之交互。
sqlalchemy是一个Python库和一个ORM(对象关系映射器)。通过SQLAlchemy,可以将Python对象映射到MySQL数据库表中。这种方法可以使MySQL与Python代码的交互更直观和更简单。

链接数据库

from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)# 本地基础信息的主机名
HOSTNAME = "127.0.0.1"
# mysql端口号
PORT = "3306"
# 账号
USERNAME = "root"
# 密码
PASSWORD = "admin123"
# 数据库名
DATABASE = "flasklearn"
# 将相关的配置挂载app.config中
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"# SQLAlchemy会加载app中的配置
db = SQLAlchemy(app)@app.route('/')
def hello_world():return 'Hello World!'if __name__ == '__main__':app.run()

测试是否连接成功

在db的位置的下面放上这段代码,如果出现(1,)代表链接成功了!

with app.app_context():with db.engine.connect() as conn:# 使用 text() 函数将字符串转换为可执行对象rs = conn.execute(text("SELECT 1"))print(rs.fetchone())#日志中出现 (1,) 代表数据库连接成功

创建数据库表

上面都是有注释的,执行的话就可以,直接生成数据库表,这个执行之前,数据库得有这个库。

有这个库就行,千万得提前创建好奥,不然会报错哒~~~~~~~~~~~~

from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)# 本地基础信息的主机名
HOSTNAME = "127.0.0.1"
# mysql端口号
PORT = "3306"
# 账号
USERNAME = "root"
# 密码
PASSWORD = "admin123"
# 数据库名
DATABASE = "flasklearn"
# 将相关的配置挂载app.config中
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"
# SQLAlchemy会加载app中的配置
db = SQLAlchemy(app)class User(db.Model):__tablename__ = 'user'id = db.Column(db.Integer, primary_key=True, autoincrement=True)username = db.Column(db.String(100), nullable=False)password = db.Column(db.String(100), nullable=False)# 执行所有的模型,来创建数据库with app.app_context():db.create_all()@app.route('/')
def hello_world():return 'Hello World!'if __name__ == '__main__':app.run()

主要的是,这段代码是创建一个User模型,然后执行db。create_all()会执行这个上面创建的模型然后映射在数据库中,但是如果后期你想在user中增加一个字段,这种方法是有弊端的。有一种新的方式。

class User(db.Model):__tablename__ = 'user'id = db.Column(db.Integer, primary_key=True, autoincrement=True)username = db.Column(db.String(100), nullable=False)password = db.Column(db.String(100), nullable=False)# 执行所有的模型,来创建数据库
with app.app_context():db.create_all()

flask_migrate

上面第一种方式链接数据库是很简单的,不需要这种方式。接下来会有个特殊的方式。

只看注释,完整的代码和使用方式在末尾查看。

# 这个如果上面的模型新增了一个字段的话这个表是不会发生变化的,数据库表是不会发生变化,但是新增的模型会添加到数据库中
# 上面的了解即可
# 需要了解和掌握下面的方式
# pip install flask-migrate
# migrate = Migrate(app,db)
# 创建数据库的三个步骤
# 1. flask db init  只需要执行一次
# 2. flask db migrate 识别ORM模型的改变,生成迁移脚本
# 3. flask db upgrade 运行迁移脚本同步到数据库中# 如果字段发生变化,只需要执行后面两个步骤就可以了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/485213.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python学opencv|读取图像(四)imshow()函数尝试

【1】引言 前述已经学习了opencv读取图像的基本操作,包括下述链接: python学opencv|读取图像-CSDN博客 python学opencv|读取图像(二)保存彩色图像-CSDN博客 python学opencv|读取图像(三)放大和缩小图像…

AC高可靠

在真实网络中,一台AC可能要管理上百台AP,因此对与AC的可靠性要求目前有4种解决方案 分别是VRRP双机热备,双链路冷备,双链路热备,N1备份 简述 VRRP双机热备份 主备AC两个独立的IP地址,通过VRRP对外虚拟为同…

docker逃逸总结

一、 检查是否在docker容器中 通过以下两个地方来判断 # 是否存在此文件 ls -al /.dockerenv# 在其中是否包含docker字符串 cat /proc/1/cgroup除了上面两种外还有其他方式判断,如检测mount、fdisk -l查看硬盘 、判断PID 1的进程名等也可用来辅助判断。 容器逃逸…

第十七章 使用 MariaDB 数据库管理系统

1. 数据库管理系统 数据库是指按照某些特定结构来存储数据资料的数据仓库。在当今这个大数据技术迅速崛起的年代,互联网上每天都会生成海量的数据信息,数据库技术也从最初只能存储简单的表格数据的单一集中存储模式,发展到了现如今存储海量…

六、Prompt工程——进阶迭代

Prompt工程——进阶迭代 一、Prompt样本提示零样本提示(Zero-shot Prompting)少量样本提示(Few-shot Prompting) 自洽性/自一致性(Self-Consistency)Prompt生成知识提示生成知识提示(Generate Knowledge Prompting) 这些都是业界总结出来的一些方法论,大家主要是学习…

微信小程序实现图片拖拽调换位置效果 -- 开箱即用

在编写类似发布朋友圈功能的功能时,需要实现图片的拖拽排序,删除图片等功能。 一、效果展示 **博主的小程序首页也采用了该示例代码,可以在威信中搜索:我的百宝工具箱 二、示例代码 1.1、在自己的小程序中创建组件 1.2、组件…

AWS 机器学习,推动 AI 技术的健康发展

目录 一、AI 正在改变生产方式二、从炒作走向务实1、选对场景2、重视数据3、产品思维4、持续优化 三、人才是最稀缺的资源四、负责任的 AI 开发五、未来已来六、启示与思考七、结语 如果说传统软件开发是手工作坊,那么 AI 就像工业革命带来的机器生产。 在最新的一…

【计算机网络】实验15:VLAN间通信的实现方法“单臂路由”

实验15 VLAN间通信的实现方法“单臂路由” 一、实验目的 加深对VLAN间通信的实现方法“单臂路由”的理解。 二、实验环境 Cisco Packet Tracer模拟器 三、实验过程 1.构建网络拓扑,并配置好主机的IP地址、子网掩码、默认网关,如图1,2所…

11.20[JAVAEXP3]重定向细究【DEBUG】

设置了根域名访问为testServlet,让他重定向到首页为test.jsp,事实上也都触发了,但是最后显示的为什么不是test.jsp生成页面,依然还是index.jsp生成的页面?? 重定向是通过Dispatcher进行的,而不是sendRedir…

go基础总结

最近参加字节跳动后端青训营,技术栈是go。go跟Java还是有些区别的,所以自己做点笔记来总结总结go的基础语法 数据类型 go的数据类型有以下几类: 数值类型:整形分为(u)int8、(u)int16、(u)int32、byte、rune、uintptr…&#xf…

系统思考—持续学习

今天与客户深入讨论了2025年的项目计划。 今年,我们为管理层成功交付了系统思考的工作坊,客户对2025年有了更高的期望——希望通过真实的议题,借助系统思考、心智模式、团队学习的工具,推动团队在战略共识、策略落地以及每月复盘…

【JavaWeb后端学习笔记】Java上传文件到阿里云对象存储服务

阿里云对象存储 1、创建阿里云对象存储节点2、上传文件2.1 修改项目配置文件2.2 定义一个Properties类获取配置信息2.3 准备一个alioss工具类2.4 创建注册类,将AliOssUtil 注册成Bean2.5 使用AliOssUtil 工具类上传文件2.6 注意事项 使用阿里云对象存储服务分为以下…

OpenSSH和OpenSSL升级

需求 centos7.9升级SSH和SSL OpenSSH升级为openssh9.8 OpenSSL升级为openssl-3.4.0 下载openssh最新版本与openssl对应版本 openssh最新版本下载地址 wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gzOpenSSL下载地址 这里下载的是3.4.0 wg…

openEuler 知:安装系统

文章目录 前言图形化安装文本方式安装 前言 本文只介绍安装过程中需要特别注意的地方,常规的内容需要参考其它文档。 图形化安装 自定义分区: 说明:anaconda 默认分区,在 OSNAME.conf 中进行了配置,openEuler 默认根…

JVM-程序计数器与栈

目录 程序计数器1:作用:2:特点:1:线程私有2:内存不会溢出 栈1:介绍:2:问题辨析: 程序计数器 1:作用: 程序计数器的作用就是记录下一条…

iPhone手机清理软件:相册清理大师推荐

随着智能手机成为我们日常生活的必需品,手机中的数据日益膨胀,尤其是照片和视频这类容易积累的文件。对于iPhone用户来说,管理这些文件,特别是清理相册变得尤为重要。本文将介绍一款备受推崇的iPhone手机清理软件——CleanMyPhone…

vue+mars3d点击图层展示炫酷的popup弹窗

展示效果 目录 一:叠加数据图层到地图上,此时需要使用bindPopup绑定popup 二、封装自定义的popup,样式可以自行调整 一:叠加数据图层到地图上,此时需要使用bindPopup绑定popup 这里我根据数据不同,展示的…

【软件工程】软件测试工程

文章目录 概述一、软件测试的定义二、软件测试的目的三、软件测试的原则四、软件测试的内容五、软件测试的方法六、软件测试的流程七、软件测试人员的职责 功能测试与非功能测试一、功能测试二、非功能测试三、功能测试与非功能测试的区别 性能测试一、定义与目的二、测试内容三…

BAT:确定宏基因组bin的物种(GTDB-tk注释较差的时候)

今天用GTDB-tk注释了我的几百个bin,结果一坨 family水平的都有大量不可读的注释 因此,尝试用BAT做注释,BAT是CAT软件中的一个部分。 CAT:contig稳健物种分类_cat软件 物种分类-CSDN博客 使用 要下载数据库文件,请在…

[Vue warn]: Invalid prop: custom validator check failed for prop “index“.

报错图片: 翻译报错原因:要求一个 String字符串类型的index数据,但是index数据类型不是,我们只需 加个单引号 拼接即可。 修改后代码: 如果对你有帮助,给个关注呗~谢谢啦。