flask+mysql入门案例

在 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

相关推荐

  1. 12.Netty入门案例

    2024-07-13 20:34:04       28 阅读
  2. Flink 入门案例介绍

    2024-07-13 20:34:04       22 阅读
  3. springMVC入门案例

    2024-07-13 20:34:04       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 20:34:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 20:34:04       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 20:34:04       58 阅读
  4. Python语言-面向对象

    2024-07-13 20:34:04       69 阅读

热门阅读

  1. 【C语言】关系运算符详解 - 《后宫那些事 ! 》

    2024-07-13 20:34:04       20 阅读
  2. 在C++中怎样使用C库

    2024-07-13 20:34:04       18 阅读
  3. C语言——练习:水仙花数、n次幂值的计算

    2024-07-13 20:34:04       17 阅读
  4. [题解]P2895 流星雨

    2024-07-13 20:34:04       18 阅读
  5. Xshell 连接到运行在 WSL 上的 Ubuntu

    2024-07-13 20:34:04       18 阅读
  6. Git使用方法

    2024-07-13 20:34:04       21 阅读
  7. LocalAI - 笔记

    2024-07-13 20:34:04       20 阅读
  8. memcpy的使用

    2024-07-13 20:34:04       17 阅读