【Flask开发实战】安装mysql数据库与配置连接

news2024/11/15 11:16:11

1、安装mysql

通过yum方式安装MySQL服务器:

sudo yum install mysql-server
在安装过程中,系统可能会要求确认安装。按下Y键并按回车键继续。


安装完成后,MySQL服务器应已自动启动。可以使用以下命令查看和启动MySQL服务:

sudo systemctl status mysqld

sudo systemctl start mysqld


配置MySQL安全性
运行以下命令来加强MySQL的安全性和设置其他选项:

sudo mysql_secure_installation
按照提示操作以完成安全设置,包括设置root密码、删除匿名用户、禁止远程root登录、删除测试数据库等。

登录MySQL验证
mysql -u root -p
系统将提示您输入之前设置的root密码。输入密码后,您将进入MySQL的交互式命令行界面。

 创建数据库

#创建新的登录用户:
create user newname identified by 'password';

#远程登录授权
grant all privileges on *.* to 'newusername'@'%' identified by 'password' with grant option;

#刷新
flush privileges;

#创建数据库
create database 'databasename'

2、配置flask数据库操作

文件:app/config.py

#mysql连接信息
HOSTNAME="X.X.X.X"
PORT=3306
USERNAME="root"
PASSWORD="yourpasswd"
DATABASE="yourdatabase"
DB_URI = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"
SQLALCHEMY_DATABASE_URI = DB_URI

3、创建模型

文件:app/ext.py

#ext.py:这个文件存在的意义就是为了解决循环引用的问题
from flask_sqlalchemy import SQLAlchemy

db=SQLAlchemy()

文件:app/model.py

from exts import db

class  UserModel(db.Model):
     __tablename__="user"
     id=db.Column(db.BigInteger,primary_key=True,autoincrement=True)
     username=db.Column(db.String(200),nullable=False)
     password=db.Column(db.String(300),nullable=False)
     email=db.Column(db.String(100),nullable=False,unique=True)
     join_time=db.Column(db.DateTime,default=datetime.now)

4、flask绑定

安装python相关模块

MySQLdb:MySQLdb是用Python来操作mysql的包,因此通过pip来安装,命令如下:pip install mysql-python。
pymysql:pymysql是用Python来操作mysql的包,因此通过pip来安装,命令如下:pip3 install pymysql。如果您用的是Python 3,请安装pymysql。
SQLAlchemy:SQLAlchemy是一个数据库的ORM框架,我们在后面会用到。安装命令为:pip3 install SQLAlchemy。

flask-migrate是基于Alembic进行的一个封装,并集成到Flask中,而所有的迁移操作其实都是Alembic做的,他能跟踪模型的变化,并将变化映射到数据库中。安装命令为:pip3 install flask-migrate

 导入相关模块

import config
from exts import db
from models import UserModel

from flask_migrate import Migrate

 绑定mysql操作

###绑定配置文件
app.config.from_object(config)

db.init_app(app)
migrate=Migrate(app,db)

 app.py完整文件

from flask import Flask
import config
from exts import db
from models import UserModel

from flask_migrate import Migrate


app = Flask(__name__)

###绑定配置文件
app.config.from_object(config)
db.init_app(app)
migrate=Migrate(app,db)



@app.route('/')

def index():
    return 'Hello, Flask!'


if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0',port=5000)

5、migrate数据库操作测试

将当前的app导入到环境变量中后,接下来就是需要初始化一个迁移文件夹:

flask db init


然后再把当前的模型添加到迁移文件中:

 flask db migrate


最后再把迁移文件中对应的数据库操作,真正的映射到数据库中:

 flask db upgrade

 数据库中查询已映射user表,同时多了个alembic_version表,用于migrate数据迁移变更记录

后续操作中,所有涉及的表会通过migrate来新增、调整和变更,操作比较灵活方便。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日一题 --- 有效的字母异位词[力扣][Go]

有效的字母异位词 题目:242. 有效的字母异位词 给定两个字符串 *s* 和 *t* ,编写一个函数来判断 *t* 是否是 *s* 的字母异位词。 **注意:**若 *s* 和 *t* 中每个字符出现的次数都相同,则称 *s* 和 *t* 互为字母异位词。 示例 …

基于java实现学科竞赛管理系统【Springboot+mybatis+layui】

基于java实现学科竞赛管理系统【Springbootmybatislayui】 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文…

脱敏技术!!!

什么是数据脱敏??? 数据脱敏(Data Masking)是一种数据安全技术,旨在通过预先设定的规则和算法,对原始数据中包含的敏感信息进行变形处理,使得这些信息在非生产环境(例如…

​AI大模型学习:优化结构与算法,赋能智能未来

在当前技术环境下,AI大模型学习不仅要求研究者具备深厚的数学基础和编程能力,还需要对特定领域的业务场景有深入的了解。通过不断优化模型结构和算法,AI大模型学习能够不断提升模型的准确性和效率,为人类生活和工作带来更多便利。…

Git的原理和使用(四):理解分布式版本控制系统与远程仓库的相关配置

目录 远程操作 理解分布式版本控制系统 远程仓库 新建远程仓库 克隆远程仓库 向远程仓库推送 拉取远程仓库 配置Git 忽略特殊文件 为命令配置别名 标签管理 理解标签 创建标签 操作标签 远程操作 理解分布式版本控制系统 1、每个人的电脑都是一个完整的版本库&…

JavaEE之网络初识(网络中的一些基本概念)详解

😽博主CSDN主页: 小源_😽 🖋️个人专栏: JavaEE 😀努力追逐大佬们的步伐~ 目录 1. 前言 2. 网络中的一些基本概念 2.1 IP地址 2.2 端口号 2.3 网络协议 2.4 协议分层 2.5 封装 2.6 分用 (封装的逆向过程) 2.7 客户端 vs …

hcia datacom课程学习(4):ICMP与ping命令

1.什么是ICMP ICMP是ip协议的一部分,常用的ping命令就是基于icmp协议的。 在防火墙策略中也能看到ICMP,如果将其禁用,那么其他主机就ping不通该主机了 2. ICMP数据报 2.1数据报构成 ICMP协议的报文包含在IP数据报的数据部分, …

用Unity3D实现简单的RPG游戏

文章目录 开发流程及关键要素说明**1. **环境设置与项目创建******2. **场景搭建******3. **角色控制******4. **用户输入处理******5. **敌人与战斗系统******6. **物品与装备系统******7. **任务与对话系统******8. **UI与菜单系统******9. **保存与加载系统******10. **测试…

动态内存管理(重要)

目录 1.为什么要有动态内存分配 2.malloc和free 2.1 malloc 2.2 free 3. calloc和realloc 3.1 calloc 3.2 realloc 4.常见的动态内存的错误 4.1对NULL指针的解引用操作 4.2对动态开辟空间的越界访问 4.3对非动态开辟内存使用free释放 4.4使用free释放一块动态开辟内…

rtt的io设备框架面向对象学习-硬件定时器设备

目录 1.硬件定时器设备类对象图全貌2.stm32硬件定时器设备类及其构造函数3 硬件定时器设备基类及其构造函数4 设备基类及其构造函数5.总结6.内部调用流程7.应用程序使用流程 1.硬件定时器设备类对象图全貌 设备驱动层的硬件定时器类是实现类,是需要各个BSP实现的。其…

《数据结构学习笔记---第五篇》---链表OJ练习下

step1:思路分析 1.实现复制,且是两个独立的复制,我们必须要理清指针之间的逻辑,注意random的新指针要链接到复制体的后面。 2.我们先完成对于结点的复制,并将复制后的结点放在原节点的后面,并链接。 3.完成random结点…

Linux常用命令-文件操作

文章目录 ls基本用法常用选项组合选项示例注意事项 cd基本用法示例注意事项 pwd基本用法示例选项总结 cp基本用法常见选项示例注意事项 rm基本用法常见选项示例删除单个文件:交互式删除文件:强制删除文件:递归删除目录:交互式递归…

腾讯云优惠券、代金券、云服务器折扣券领取渠道汇总

目前,云计算市场竞争太激烈了,为了吸引用户上云,腾讯云经常推出各种优惠活动,其中就包括优惠券、代金券和云服务器折扣券等。本文将为大家汇总腾讯云优惠券、代金券及云服务器折扣券的领取渠道,帮助大家轻松获取优惠&a…

蓝桥杯java组 最少砝码

问题描述】 你有一架天平。现在你要设计一套砝码,使得利用这些砝码可以称出任意小于等于 N 的正整数重量。 那么这套砝码最少需要包含多少个砝码? 注意砝码可以放在天平两边。 【输入格式】 输入包含一个正整数 N。 【输出格式】 输出一个整数代表答案…

了解微信小程序开发流程

前言:本文只适合初学者了解大致开发流程,好让后续学习胸有成竹,有条不紊 1、开发准备 ① 在微信公众平台 (qq.com)完成微信小程序账号注册 ②下载安装微信小程序开发者工具 2、创建项目 新建 新建时需要的appid,在微信公众平…

【物联网项目】基于ESP8266的家庭灯光与火情智能监测系统——文末完整工程资料源码

目录 系统介绍 硬件配置 硬件连接图 系统分析与总体设计 系统硬件设计 ESP8266 WIFI开发板 人体红外传感器模块 光敏电阻传感器模块 火焰传感器模块 可燃气体传感器模块 温湿度传感器模块 OLED显示屏模块 系统软件设计 温湿度检测模块 报警模块 OLED显示模块 …

开源AI引擎:自然语言处理技术在人岗匹配中的应用

一、应用场景介绍 如何从海量的求职者中精准地匹配到合适的候选人,是每个人力资源部门都需要解决的问题。自然语言处理(NLP)技术的发展为人岗匹配提供了新的解决方案。通过信息抽取和文本分类技术,企业可以更高效地分析职位描述和…

【SpringBoot从入门到精通】03_SpringBoot自动配置原理

三、SpringBoot自动配置原理 我们通过编写SpringBoot HelloWorld程序&#xff0c;体会到了其强大与便捷&#xff0c;它的这些功能都是基于SpringBoot的依赖管理与自动配置。 3.1 核心特性 依赖管理 父项目做依赖管理 <!-- 当前项目的父项目&#xff1a;依赖管理 --> &…

JavaScript 常用方法(1):JS日期格式化函数、JS实现并列排序、JS实现数字每三位添加逗号、JS 实现根据日期和时间进行排序

1、JS日期格式化函数 JS日期格式化转换方法 /*** description 格式化时间* param fmt 格式 如&#xff1a;yyyy-MM-dd、yyyy-MM-dd HH:mm:ss、yyyy年MM月dd日 W HH:mm:ss等* param {String} date 时间戳* returns {string|null}* 对 Date 的扩展&#xff0c;将 Date 转化为指…

LangChain教程 | langchain 文本拆分器 | Text Splitters全集

在阅读本文前&#xff0c;建议先看下langchain的基础&#xff0c;最主要的是先看下langchain 文档加载器使用教程有关的内容&#xff0c;会更容易把知识串联起来。 概述 一旦加载了文档&#xff0c;您通常会想要转换它们以更好地适应您的应用程序。最简单的例子是&#xff0c;您…