首页 > 数据库 >003.flask与Mysql的连接以及增删改查

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

时间:2024-08-05 15:52:34浏览次数:12  
标签:flask 改查 app db 003 session user password

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='[email protected]',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='[email protected]',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)

标签:flask,改查,app,db,003,session,user,password
From: https://www.cnblogs.com/positive-boy/p/18343353

相关文章

  • Oracle捕捉SQL语法错误的10035事件
    Oracle数据库中,有的时候新上的程序,会出现与数据库建立了会话,但是传输的SQL是错误的情况,这个时候,我们需要打开oracle10035事件。ALTERSYSTEMSETEVENTS'10035tracenamecontext forever,level1;打开后,在alert文件中,会出现所有解析失败的SQL.解析失败的原因总结......
  • Flask 应用程序的 POST 请求出现 405 method not allowed 错误
    我有一个简单的Web应用程序,可以使用以下代码向选定的受访者发送消息(使用TwilioAPI):app.pyclient=Client(account_sid,auth_token)@app.route('/')defindex():returnrender_template('index.html')@app.route('/send_sms',methods=['POST......
  • FLASK 相关链接
    FLASK中文文档:https://dormousehole.readthedocs.io/en/latest/FLASK教程:https://www.bookstack.cn/read/head-first-flask/README.mdhttp://www.coolpython.net/flask_tutorial/basic/route.htmlhttp://www.pythondoc.com/flask-mega-tutorial/index.htmlPython中文学......
  • python+flask计算机毕业设计健康管理系统的设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景近年来,随着人们生活水平的提高和健康意识的增强,健康管理已成为社会关注的焦点。传统的健康管理方式往往依赖于纸质记录和医生的口头建议,这......
  • python+flask计算机毕业设计实验室信息化管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在当今快速发展的科技时代,实验室作为科研与教学的核心场所,其管理效率和信息化水平直接影响到研究成果的质量和速度。传统的实验室管理方式......
  • python+flask计算机毕业设计中国诗词鉴赏网站(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景中国诗词作为中华文化的重要组成部分,承载着千年的历史与文化底蕴。从古至今,诗词一直是文人墨客表达情感、描绘景象的重要工具。然而,随着时......
  • python+flask计算机毕业设计装修公司管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景近年来,随着城市化进程的加速和人们生活水平的提高,装修行业迎来了前所未有的发展机遇。然而,传统装修公司管理方式存在诸多弊端,如信息不透明......
  • 从数据爬取到可视化展示:Flask框架与ECharts深度解析
    目录......
  • pinecone向量库的介绍和基本使用(增删改查)
    本文来自于【向量库】pinecone向量库的介绍和基本使用(增删改查)Pinecone是一个实时、高性能的向量数据库,专为大规模向量集的高效索引和检索而设计。它提供亚秒级的查询响应时间,确保用户可以迅速获取所需信息。Pinecone采用高度可伸缩的分布式架构,可以轻松应对不断增长的数......
  • 001在vscode中创建flask项目框架
    目录在vscode中创建flask项目1.配置flask环境2.导入以及创建flask框架在vscode中创建flask项目1.配置flask环境先配置解释器然后再该虚拟环境下进行安装flask模块进行该指令:pipinstallflask==版本号2.导入以及创建flask框架在桌面或者文件中建立一个文件夹将其移......