flask之SQLAlchemy使用

一:目录结构如下:

二:代码实现:

models->user.py

from demo1225.run import db

class User(db.Model):

    __tablename__ = 'users'
    id = db.Column(db.Integer,primary_key = True)
    name = db.Column(db.String(64),unique = True,index = True)
    age = db.Column(db.Integer,default = 18)

    # 显示可读字符串
    def __repr__(self):
        return 'Users %s'%self.name

templates->index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table border = '1'>
    <tr>
        <td>姓名</td>
        <td>年龄</td>
    </tr>
    <tr>
        <td>
            {{ data.name }}

        </td>
        <td>
            {{ data.age }}
        </td>

    </tr>

</table>
</body>
</html>

templates->login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Xiaotaotao</title>
</head>
<body>

<form method="post">
    <label>姓名:</label><input type="text" name="username" placeholder="请输入姓名"><br/>
    <label>年纪:</label><input type="password" name="userage" placeholder="请输入年纪"><br/>
    <input type="submit" value="提交">
</form>

</body>
</html>

conf.py

注意:这里的数据库可以先创建好了,再填写

class DEVConfig(object):
    DEBUG = True
    SECRET_KEY = 'wocao'
    # 数据库设置
    SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://数据库用户名:密码@127.0.0.1:3306/你创建的数据库?charset=utf8'
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    # 查询时会显示原始SQL语句
    SQLALCHEMY_ECHO = True

run.py

from flask import Flask,render_template,request
from demo1225.conf import DEVConfig
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate,MigrateCommand
from flask_script import Manager

app = Flask(__name__)
# 配置数据库
app.config.from_object(DEVConfig)
# 初始化sqlalchemy
db = SQLAlchemy(app)

from demo1225.models.user import *

# 迁移数据库
migrate = Migrate(app,db)
manager = Manager(app)
manager.add_command('db',MigrateCommand)

@app.route('/')
def menu():
    return 'ok'

@app.route('/index')
def index():
    # 返回查询
    user = User.query.first()
    name = user.name
    age = user.age
    data = {
        'name':name,
        'age':age
    }
    return render_template('index.html',data = data)

@app.route('/login',methods = ['POST','GET'])
def login():
    if request == 'POST':
        username = request.form.get('username')
        userage = request.form.get('userage')
        list = User(name = username,age = userage)
        db.session.add(list)
        db.session.commit()
    return render_template('login.html')




if __name__ == '__main__':
    #db.create_all()
    app.debug=True
    app.run(port = 8808)

最后需要注意的是:

在进行上述操作的时候,第一次运行的时候,先把main函数中的第一个db.create_all()接触屏蔽,就是创建好表,然后再插入点数据,如果之后再进行操作,把该句屏蔽就行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
首先,需要引入 Flask 和相关的模块: ```python from flask import Flask, render_template, request, redirect, url_for, flash from flask_sqlalchemy import SQLAlchemy from werkzeug.security import generate_password_hash, check_password_hash ``` 然后,需要创建 Flask 应用程序实例,并且设置数据库连接: ```python app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' app.config['SECRET_KEY'] = 'your_secret_key' db = SQLAlchemy(app) ``` 接下来,定义用户数据模型: ```python class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), unique=True) password = db.Column(db.String(100)) ``` 然后,定义修改密码的路由和视图函数: ```python @app.route('/change_password', methods=['GET', 'POST']) def change_password(): if request.method == 'POST': current_password = request.form['current_password'] new_password = request.form['new_password'] confirm_password = request.form['confirm_password'] user = User.query.filter_by(username=session['username']).first() if check_password_hash(user.password, current_password): if new_password == confirm_password: user.password = generate_password_hash(new_password) db.session.commit() flash('Password changed successfully!', 'success') return redirect(url_for('profile')) else: flash('New password and confirm password do not match!', 'error') else: flash('Current password is incorrect!', 'error') return render_template('change_password.html') ``` 最后,在 HTML 模板文件中添加表单: ```html {% extends 'base.html' %} {% block content %} <h1>Change Password</h1> {% with messages = get_flashed_messages() %} {% if messages %} <ul class="messages"> {% for message in messages %} <li class="{{ message[0] }}">{{ message[1] }}</li> {% endfor %} </ul> {% endif %} {% endwith %} <form method="post"> <label for="current_password">Current Password:</label> <input type="password" name="current_password" id="current_password" required> <br> <label for="new_password">New Password:</label> <input type="password" name="new_password" id="new_password" required> <br> <label for="confirm_password">Confirm Password:</label> <input type="password" name="confirm_password" id="confirm_password" required> <br> <input type="submit" value="Change Password"> </form> {% endblock %} ``` 这样就完成了使用 Flask 实现修改密码功能。需要注意的是,密码需要使用哈希函数进行加密,以保护用户的隐私。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

保持可爱forever

赞赞赞

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值