003.flask与Mysql的连接以及增删改查

news/2025/3/15 21:46:28/文章来源:https://www.cnblogs.com/positive-boy/p/18343353

Flask与Mysql的连接以及在Flask中对数据库进行增删改查

  1. python解释器:3.8.3版本
  2. flask==2.2.2版本
  3. flask_sqlalchemy=3.1.1
  4. flask_migrate==4.0.7

1.创建文件并且配置

  1. 创建一个大文件

    1722827280193

  2. 在该文件中进行创建static(静态),templates(动态文件),app.py文件

1722827070681

  1. 将大文件移到vscode软件中(pycharm一样的操作),我这就以vscode来进行操作

    1722827696411

  2. app.py文件进行配置

from flask import Flask
app=Flask(__name__)@app.route('/')
def hello_world():return 'Hello World'
if __name__=="__main__":app.run(debug=True) #进入Debug模式,修改自动刷新网页(方便)

2.flask与Mysql数据库进行连接以及检测是否连接成功

  1. 在Mysql中创建一个数据库,命名为flask

    1722828573237

    1722828718590

    1722828772265

  2. 在app.py中对mysql进行配置

    1.下载模块:pip install flask_sqlalchemy==3.1.1

    #MysQL所在的主机号
    HOSTNAME="127.0.0.1"
    #MYSQL的端口号,默认为3306
    PORT=3306
    #连接mysql的用户名,读者用自己设置的
    USERNAME='root'
    #连接mysql的密码
    PASSWORD='你的数据库的密码'#例子:PASSWORD='xxx'
    #mysql上创建的数据库的名字
    DATEBASE='flask'app.config['SQLALCHEMY_DATABASE_URI']=f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATEBASE}?charset=utf8'
    #导入模块
    from flask_sqlalchemy import SQLAlchemy
    #使用SQLAlchemy创建一个db对象,SQLAlchemy会自动读取app.config中连接数据库的信息
    db=SQLAlchemy(app)

    1722830692852

  3. 检验数据库是否连接成功

    #测试代码 
    #导入模块
    import sqlalchemy
    with app.app_context():with db.engine.connect() as conn:rs=conn.execute(sqlalchemy.text('select 1'))print(rs.fetchone())  #打印结果为(1,)证明连接成功
    
  4. 运行结果如下:

    1722831003209

3.创建一个类对象User以及将属性添加到数据库中

  1. 创建一个类User

    #创建模型:User
    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.Strg(100),nullable=False)
  2. 将属性映射到数据库的两种方法

    1. 第一种方法:不推荐(如果在添加属性的话,通过这个方法,他不会不这个属性也添加进去)

      1722832611245

      数据库结果

      没运行之前是这样子的:

      1722832771069

      运行app.py之后:

      1722832928767

      1722832984095

      点击之后结果如下

      1722833065315

    2. 第二种方法推荐

      1. 下载模块:pip install flask_mirgrate==4.0.7
#导入模块
from flask_migrate import Migrate
migrate=Migrate(app,db)
'''
ORM模型映射成表的三步:1.flask db init:这步只需要执行一次2. flask db migrate :识别ORM模型的改变,生成迁移脚本3.flask db upgrade:运行迁移脚本
'''

我们先在User里面添加一个属性 :email,方便看出效果.

1722841597117

  1. 根据上面的ORM模型三部曲在终端运行,首先在vscode中输入快捷键:ctrl+ `。
    1. 输入:flask db init

1722841824734

1722841901781

  1. 输入:flask db migrate

    1722841981934

1722842045165

  1. 最后一步:flask db upgrade

    1722842108638

1722842154960

备注:如果是第一种方法,这里是添加不上的。

4.在flask中进行数据库的 增删改查

  1. 增操作(普通)

    #在flask库中将数据添加到数据库中
    @app.route('/user/add')
    def add_user():#实例对象user=User(username='soul',password='python')#将ORM对象添加到db.session中db.session.add(user)#将db.session中的改变同步到数据库中区db.session.commit()#这里必须要return一个数据,要不然会报错return '用户添加成功'
    

    1722842680472

1722842698306

  • 增操作(改善)

    #导入模块
    from flask import request
    @app.route('/blog/add')
    def user_add():username=request.args.get('username',default='李四',type=str)password=request.args.get('password',default='xjs1314',type=str)email=request.args.get('email',default='admin@qq.com',type=str)print(username,password)#创建一个ORM对象user=User(username=username,password=password,email=email)#将ORM对象添加到db.session中db.session.add(user)#将db.session中的改变同步到数据库中区db.session.commit()#必须return一个数据,要不然会报错return '用户添加成功'
    

    1722843017807

1722843055550

  1. 删操作

    #删操作
    @app.route('/user/delete/')
    def delete_user():#1.查找user=User.query.get(2)#删除id=2的数据#2.删除数据db.session.delete(user)#3.提交数据同步到数据库db.session.commit()return f'删除成功'
    

    1722843196469

1722843225998

  1. 修改操作

    #修改数据
    @app.route('/user/update')
    def update_user():#查找数据user=User.query.filter_by(password='python').first()#获取第一个#2.修改数据user.password='1314'#不需要添加,直接提交db.session.commit()return '修改成功'
    

    1722843340449

    1722843378067

  2. 查找操作

    #查询数据
    @app.route('/user/query')
    def query_user():#1.get查找:根据主键查找user=User.query.get(1)#通过主键id查找,这是一个实例对象,就是上面的User面向对象的实例print(user)print(f'{user.id}:{user.username}--{user.password}')#2.filter_by查找:用于查找多条数据:类似是一个类列表。users=User.query.filter_by(username='熊俊松')for user in users:print(f'{user.id}:{user.username}--{user.password}')return '查找成功'
    

    1722843541380

5.总结

app.py里面的所有代码如下:

from flask import Flask
app=Flask(__name__)@app.route('/')
def hello_world():return 'Hello World'#MysQL所在的主机号
HOSTNAME="127.0.0.1"
#MYSQL的端口号,默认为3306
PORT=3306
#连接mysql的用户名,读者用自己设置的
USERNAME='root'
#连接mysql的密码
PASSWORD='xjs13149420'
#mysql上创建的数据库的名字
DATEBASE='flask'
#在app.config中设置好连接数据库的信息
app.config['SQLALCHEMY_DATABASE_URI']=f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATEBASE}?charset=utf8'
#导入模块
from flask_sqlalchemy import SQLAlchemy
#使用SQLAlchemy创建一个db对象,SQLAlchemy会自动读取app.config中连接数据库的信息
db=SQLAlchemy(app)#测试代码
#导入模块
# import sqlalchemy
# with app.app_context():
#     with db.engine.connect() as conn:
#         rs=conn.execute(sqlalchemy.text('select 1'))
#         print(rs.fetchone())  #打印结果为(1,)证明连接成功#创建模型:User
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)email=db.Column(db.String(100))#导入模块
from flask_migrate import Migrate
migrate=Migrate(app,db)
'''
ORM模型映射成表的三步:1.flask db init:这步只需要执行一次2. flask db migrate :识别ORM模型的改变,生成迁移脚本3.flask db upgrade:运行迁移脚本'''# #在flask库中将数据添加到数据库中
# @app.route('/user/add')
# def add_user():
#     #实例对象
#     user=User(username='soul',password='python')
#     #将ORM对象添加到db.session中
#     db.session.add(user)
#     #将db.session中的改变同步到数据库中区
#     db.session.commit()
#     #这里必须要return一个数据,要不然会报错
#     return '用户添加成功'#第二种添加方法
#导入模块
from flask import request
@app.route('/user/add')
def user_add():username=request.args.get('username',default='李四',type=str)password=request.args.get('password',default='xjs1314',type=str)email=request.args.get('email',default='admin@qq.com',type=str)print(username,password)#创建一个ORM对象user=User(username=username,password=password,email=email)#将ORM对象添加到db.session中db.session.add(user)#将db.session中的改变同步到数据库中区db.session.commit()#必须return一个数据,要不然会报错return '用户添加成功'#删操作
@app.route('/user/delete/')
def delete_user():#1.查找user=User.query.get(2)#删除id=2的数据#2.删除数据db.session.delete(user)#3.提交数据同步到数据库db.session.commit()return f'删除成功'#修改数据
@app.route('/user/update')
def update_user():#查找数据user=User.query.filter_by(password='python').first()#获取第一个#2.修改数据user.password='1314'#不需要添加,直接提交db.session.commit()return '修改成功'#查找操作
#查询数据
@app.route('/user/query')
def query_user():#1.get查找:根据主键查找user=User.query.get(1)#通过主键id查找,这是一个实例对象,就是上面的User面向对象的实例print(user)print(f'{user.id}:{user.username}--{user.password}')#2.filter_by查找:用于查找多条数据:类似是一个类列表。users=User.query.filter_by(username='熊俊松')for user in users:print(f'{user.id}:{user.username}--{user.password}')return '查找成功'
with app.app_context():db.create_all()
if __name__=="__main__":app.run(debug=True)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/778169.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结构开发笔记(一):外壳IP防水等级与IP防水铝壳体初步选型

前言做产品,需要选型外壳结构,本篇普及IP防护等级与基础铝合金外壳。 IPXX防护等级IP等级(Ingress Protection rating)是用于描述电气设备外壳对异物(如尘埃、手指或其他固体物体)和水侵入的防护能力的国际标准。这个标准在全球范围内被广泛应用,以确保设备在各种环境条…

【YashanDB数据库】自关联外键插入数据时报错:YAS-02033 foreign key constraint violated parent key not found

问题现象 使用如下的sql语句创建自关联外键表: drop table self_f_key; create table self_f_key(t1 number primary key not null, t2 number); create index i_s_1 on self_f_key(t2); alter table self_f_key add constraint c_0001 foreign key(t2) references self_f_key…

《DNK210使用指南 -CanMV版 V1.0》第十七章 machine.WDT类实验

第十七章 machine.WDT类实验 1)实验平台:正点原子DNK210开发板 2)章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210…

打造高效智能的会员预约系统

打造个性化预约体验:美业、美发、按摩与医美行业的会员预约系统构建在当今这个快节奏的社会中,美容美发、按摩放松及医美整形等服务行业迎来了前所未有的发展机遇。为了提升顾客体验,增强用户粘性,并高效管理门店运营,开发一套集会员管理、预约调度、服务定制化于一体的预…

博卡会员通小程序功能案例分析

博卡会员通小程序作为一款专为消费品行业设计的会员管理工具,其功能设计紧密围绕会员管理、用户体验提升及营销策略优化三大核心目标。以下是对其关键功能的案例分析: 一、会员精细化管理 用户画像构建 功能描述:通过收集会员的基本信息(如姓名、性别、年龄等)、消费记录、…

PYYZ 集训

摸底测试#1 T1-咕咕直接 \(dp\),转移时注意限制即可。点击查看代码 signed main(){n=read(),m=read(),t=read();while(t--){int a=read(),b=read(),c=read(),d=read();bool flag=0;if(a==n&&b==m)continue;if((c==a+1&&d==b)||(d==b+1&&a==c))flag=1;…

【禁止血压飙升】阿里大佬写的 Controller 太优雅了!

作者:小塵 链接:https://juejin.cn/post/7357172505961578511 前言 见过几千行代码的 controller吗?我见过。 见过全是 try catch 的 controller 吗,我见过。 见过全是字段校验的 controller 吗,我见过。 见过全是业务代码的 controller 吗?不好意思,我们公司很多业务写…

delphi 导出到excel的7种方法

delphi 导出到excel的7种方法本文来自 爱好者8888 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/kpc2000/article/details/17066823?utm_source=copy ===================================================================================================第一种方…