首页 > 数据库 >flask+mysql入门案例

flask+mysql入门案例

时间:2024-07-13 23:56:04浏览次数:17  
标签:入门 flask app py db Flask mysql import password

在 Flask 中集成 MySQL 数据库进行用户管理是一个常见的项目需求。下面将提供一个基础的步骤和代码示例来理解如何从零开始搭建这样一个系统。

1. 环境准备

首先确保你已经安装了 Python 和必要的包。你需要安装 Flask 和用于连接 MySQL 的包 Flask-SQLAlchemy 或者 Flask-Mysqldb。这里我们使用 Flask-SQLAlchemy,因为它提供了更高级的对象关系映射(ORM)功能。

在你的终端中运行以下命令来安装必要的包:

pip install flask flask-sqlalchemy

2. 创建项目结构

假设你的项目目录如下:

my_flask_app/
    app.py
    static/
    templates/
    myapp/
        __init__.py
        models.py
        forms.py
        routes.py

3. 配置 Flask 应用

app.py 文件中设置 Flask 应用和数据库配置:

from flask import Flask
from myapp import models

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

models.db.init_app(app)

if __name__ == '__main__':
    with app.app_context():
        models.db.create_all()
    app.run(debug=True)

4. 定义模型

models.py 中定义你的数据库模型:

from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash, check_password_hash

db = SQLAlchemy()

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    password = db.Column(db.String(120), nullable=False)

    def set_password(self, password):
        self.password = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password, password)

5. 创建表单

forms.py 中使用 WTForms 创建表单:

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Length, ValidationError
from myapp.models import User

class RegistrationForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired(), Length(min=4, max=80)])
    password = PasswordField('Password', validators=[DataRequired()])
    submit = SubmitField('Register')

    def validate_username(self, username):
        user = User.query.filter_by

标签:入门,flask,app,py,db,Flask,mysql,import,password
From: https://blog.csdn.net/svygh123/article/details/140404447

相关文章

  • 尚硅谷MySQL数据库入门到大牛_宋红康--学习建议
    【MySQL上篇:基础篇】【第1子篇:数据库概述与MySQL安装篇】p01-p11学习建议:零基础同学必看,涉及理解和Windows系统下MySQL安装【第2子篇:SQL之SELECT使用篇】p12-p48学习建议:学习SQL的重点,必须重点掌握,建议课后练习多写【第3子篇:SQL之DDL、DML、DCL使用篇】p49-p73学习建议:学习SQL的......
  • C语言常见概念(划掉)我的C语言入门笔记(√)上
    本人菜鸟一枚,下述内容如有误差望各位斧正。1.什么是C语言C语言是一种计算机语言,就像汉语是一种人类语言一样。人们可以使用计算机语言给计算机下达指令,计算机会根据所接收到的指令进行工作(或者报错)。当然人类的语言不只汉语一种,计算机语言同样同样也有很多,例如Python/C++/C......
  • 双活mysql搭建
    主从搭建配置可以参考一篇文章,这篇文章是基于上一篇文章开始配置的https://www.cnblogs.com/zyp87/p/18295559主机配置说明:192.168.136.101mysql01centos7.92C4G192.168.136.102mysql02centos7.92C4G192.168.136.109vip防火墙主机互相放行firewa......
  • Datawhale AI 夏令营 从零入门CV图像竞赛(Deepfake攻防)
    DatawhaleAI夏令营从零入门CV图像竞赛(Deepfake攻防)Step0:注册Kaggle如果有Kaggle账户,直接登录即可,无需处理此步骤使用Edge浏览器安装HeaderEditor插件(点击即可跳转)链接:https://microsoftedge.microsoft.com/addons/detail/header-editor/afopnekiinpekooejpchnkg......
  • 基于gunicorn+flask+docker模型高并发部署的步骤及注意事项
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • C++ 入门基础:开启编程之旅
    引言C++是一种高效、灵活且功能强大的编程语言,广泛应用于系统软件、游戏开发、嵌入式系统、科学计算等多个领域。作为C语言的扩展,C++不仅继承了C语言的过程化编程特性,还增加了面向对象编程(OOP)的支持,使得代码更加模块化、易于管理和复用。本文将带你走进C++的世界,从......
  • MySQL优化SQL查询语句的策略与实践
    在数据库管理和优化中,针对MySQL的SQL查询优化是提升性能的关键步骤。以下是一些实践性强且高效的策略,旨在减少查询时间,提高系统响应速度:1.精准索引策略,减少全表扫描索引优化:确保在WHERE和ORDERBY子句中涉及的列上创建索引。这不仅加快了数据检索速度,还降低了服务器负担。替......
  • 网络安全——网络渗透测试入门
     ⼀、行业术语介绍渗透测试(PenetrationTesting):模拟黑客攻击手段对目标系统进行安全评估的过程。APT(AdvancedPersistentThreat):高级持续性威胁,指有组织的、长期针对性的网络攻击。PTES(PenetrationTestingExecutionStandard):渗透测试执行标准,指导渗透测试的行业标准。......
  • 【快速入门大模型应用开发,这本书帮你轻松实现!】
    文末有福利!快速入门大模型应用开发,这本书帮你轻松实现!前言书籍简介蛇尾书特色蛇尾书思维导图作译者简介业内专家书评前言如果问个问题:有哪些产品曾经创造了伟大的奇迹?ChatGPT应该会当之无愧入选。仅仅发布5天,ChatGPT就吸引了100万用户——当然,数据不是关键,关键是......
  • Mysql数据库之约束条件
    一、主键约束主键约束(PRIMARYKEYconstraint)用于唯一标识数据库表中的每条记录。语法:createtable 表名(   列名1数据类型primary key,   列名2数据类型,   ...);在主键的后面添加:auto_increment,可以让主键自增。设置auto_increment之后,可以......