Python_Flask03

这篇文章主要介绍的是数据库的增删改查操作,无多余好说的。

python 复制代码
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text
from flask_migrate import Migrate

app = Flask(__name__)

# 本地基础信息的主机名
HOSTNAME = "127.0.0.1"
# mysql端口号
PORT = "3306"
# 账号
USERNAME = "root"
# 密码
PASSWORD = "admin123"
# 数据库名
DATABASE = "flasklearn"
# 将相关的配置挂载app.config中
app.config[
    'SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"

# SQLAlchemy会加载app中的配置
db = SQLAlchemy(app)

migrate = Migrate(app,db)
# 测试数据库是否链接成功
"""
    with app.app_context():
        with db.engine.connect() as conn:
            # 使用 text() 函数将字符串转换为可执行对象
            rs = conn.execute(text("SELECT 1"))
            print(rs.fetchone())
            #日志中出现 (1,) 代表数据库连接成功
"""


class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(100), nullable=False)
    password = db.Column(db.String(100), nullable=False)

class Message(db.Model):
    __tablename__ = 'message'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    text = db.Column(db.String(100), nullable=False)
    contnet = db.Column(db.String(100), nullable=False)
    image=db.Column(db.String(255),nullable=False)


# # 执行所有的模型,来创建数据库
# with app.app_context():
#     db.create_all()

# 这个如果上面的模型新增了一个字段的话这个表是不会发生变化的,数据库表是不会发生变化,但是新增的模型会添加到数据库中
# 上面的了解即可
# 需要了解和掌握下面的方式
# pip install flask-migrate
# migrate = Migrate(app,db)
# 创建数据库的三个步骤
# 1. flask db init  只需要执行一次
# 2. flask db migrate 识别ORM模型的改变,生成迁移脚本
# 3. flask db upgrade 运行迁移脚本同步到数据库中

# 如果字段发生变化,只需要执行后面两个步骤就可以了

@app.route('/')
def hello_world():
    return 'Hello World!'

# 添加用户的操作
@app.route('/user/add')
def addUser():
    user=User(username="张三",password="123456")
    db.session.add(user) # 添加这个模型对象
    db.session.commit() # 提交要添加的数据
    return "添加用户成功"


# 修改用户的操作
@app.route('/user/update')
def updateUser():
    # 拿到这个用户的信息
    user = User.query.filter_by(username="张三").first()
    # 完成赋值操作
    user.password = "111"
    db.session.commit()
    return '修改用户成功'

# 查找数据库用户信息
@app.route('/user/query')
def searchUser():
    # 通过get的id的方式进行查询
    # user = User.query.get(1)
    # print(user)
    # print(user.username)
    # print(user.password)

    # 通过filter_by
    users = User.query.filter_by(username="张三")
    for user in users:
        print(user.username)
    return "查找用户成功"


# 删除数据库某条信息
@app.route('/user/delete')
def deleteUser():
    user =User.query.get(1)
    db.session.delete(user)
    db.session.commit()
    return "删除用户成功"


if __name__ == '__main__':
    app.run()

增删改查的操作,上面都是有注释的,每一个看一眼就行了,很简单的。

增删改查的操作,上面都是有注释的,每一个看一眼就行了,很简单的。

增删改查的操作,上面都是有注释的,每一个看一眼就行了,很简单的。

增删改查的操作,上面都是有注释的,每一个看一眼就行了,很简单的。

相关推荐
是毛毛吧3 分钟前
边打游戏边学Python的5个开源项目
python·开源·github·开源软件·pygame
暮乘白帝过重山7 分钟前
ArkTS ForEach 参数解析:组件与键值生成器
开发语言·数据库
LiamTuc17 分钟前
Java构造函数
java·开发语言
三途河畔人23 分钟前
Pytho基础语法_运算符
开发语言·python·入门
Benmao⁢33 分钟前
C语言期末复习笔记
c语言·开发语言·笔记·leetcode·面试·蓝桥杯
adsadswee34 分钟前
Qt 样式与 QLinearGradient 渐变详解
开发语言·qt·qt样式表·qlineargradient·qss渐变效果
花月C1 小时前
个性化推荐:基于用户的协同过滤算法
开发语言·后端·算法·近邻算法
脾气有点小暴1 小时前
前端页面跳转的核心区别与实战指南
开发语言·前端·javascript
rit84324992 小时前
基于MATLAB的BP神经网络手写数字识别
开发语言·神经网络·matlab
独行soc2 小时前
2025年渗透测试面试题总结-275(题目+回答)
网络·python·安全·web安全·网络安全·渗透测试·安全狮