flask如何连接mysql数据库_如何用flask链接mysql数据库

f5e7e02aa5adea5f6032f908455c2fe5.png

本篇文章给大家介绍flask如何连接MySQL,具体步骤如下

1.创建一个连接对象

首先下载flask_sqlalchemy 包,然后设置用于连接数据库的URI,

app.config['SQLALCHEMY_DATABASE_URI']='mysql://用户名:密码@127.0.0.1:3306/数据库名'

创建用来管理数据库的对象,注意参数需要和app产生联系

db = SQLAlchemy(app)

2.创建模型

这里创建一个简单的用户模型class User(db.Model):

__tablename__='user'

id = db.Column(db.Integer,primary_key=True)

name = db.Column(db.String(20),unique=True)

is_delete = db.Column(db.Boolean,default=False)

email = db.Column(db.String(30),nullable=True)

def __repr__(self):

return self.name

3.创建数据表

if __name__ == '__main__':

# 迁移数据库

db.c

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的 Flask 应用程序,包括登录和注册功能,并使用 ORM 和 MySQL 进行数据库用户名校验。请注意,这是一个基本且简化的示例,仅供参考。 首先,您需要安装 FlaskFlask-WTF、Flask-MySQLdb 等必要的库。您可以使用以下命令安装这些库: ```python pip install flask pip install Flask-WTF pip install Flask-MySQLdb ``` 下来,您需要创建一个 MySQL 数据库,用于存储用户信息。在 MySQL 中,您可以使用以下命令创建一个名为 `users` 的表: ```mysql CREATE TABLE users ( id INT(11) NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL, PRIMARY KEY (id) ); ``` 现在,让我们编写 Flask 应用程序。首先,导入必要的库: ```python from flask import Flask, render_template, redirect, url_for, flash from flask_mysqldb import MySQL from flask_wtf import FlaskForm from wtforms import StringField, PasswordField, SubmitField from wtforms.validators import DataRequired, EqualTo, Length from werkzeug.security import generate_password_hash, check_password_hash ``` 然后,创建 Flask 应用程序和 MySQL 实例: ```python app = Flask(__name__) app.config['SECRET_KEY'] = 'your-secret-key-here' app.config['MYSQL_HOST'] = 'localhost' app.config['MYSQL_USER'] = 'your-mysql-username-here' app.config['MYSQL_PASSWORD'] = 'your-mysql-password-here' app.config['MYSQL_DB'] = 'your-mysql-database-name-here' mysql = MySQL(app) ``` 下来,定义用户模型和表单: ```python class User: def __init__(self, id, username, password): self.id = id self.username = username self.password = password class RegistrationForm(FlaskForm): username = StringField('Username', validators=[DataRequired(), Length(min=4, max=50)]) password = PasswordField('Password', validators=[DataRequired(), Length(min=6, max=50)]) confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')]) submit = SubmitField('Register') class LoginForm(FlaskForm): username = StringField('Username', validators=[DataRequired(), Length(min=4, max=50)]) password = PasswordField('Password', validators=[DataRequired(), Length(min=6, max=50)]) submit = SubmitField('Login') ``` 然后,编写注册和登录视图函数: ```python @app.route('/register', methods=['GET', 'POST']) def register(): form = RegistrationForm() if form.validate_on_submit(): username = form.username.data password = generate_password_hash(form.password.data) cur = mysql.connection.cursor() cur.execute('SELECT * FROM users WHERE username = %s', (username,)) if cur.fetchone(): flash('Username already exists', 'error') else: cur.execute('INSERT INTO users (username, password) VALUES (%s, %s)', (username, password)) mysql.connection.commit() flash('Successfully registered', 'success') return redirect(url_for('login')) return render_template('register.html', form=form) @app.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm() if form.validate_on_submit(): username = form.username.data password = form.password.data cur = mysql.connection.cursor() cur.execute('SELECT * FROM users WHERE username = %s', (username,)) user = cur.fetchone() if user and check_password_hash(user[2], password): user_obj = User(user[0], user[1], user[2]) flash('Successfully logged in', 'success') # do something with the user object, e.g. store in session return redirect(url_for('index')) else: flash('Invalid username or password', 'error') return render_template('login.html', form=form) ``` 最后,编写模板文件 `register.html` 和 `login.html`,用于呈现注册和登录表单。 这就是一个简单的 Flask 应用程序,包括登录和注册功能,并使用 ORM 和 MySQL 进行数据库用户名校验。请注意,这只是一个示例,您需要根据自己的需求进行修改和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值