首页 > 其他 > 详细

Flask运行流程

时间:2020-06-11 00:04:41      阅读:66      评论:0      收藏:0      [点我收藏+]

一、配置数据库信息

config.py数据库信息配置

#设置连接数据库路径
DB_URI = "mysql+pymysql://root:root@127.0.0.1:3306/bbs?charset=utf8"

#SQLALCHEMY_DATABASE_URI加载配置好的URI
SQLALCHEMY_DATABASE_URI = DB_URI
#决定是否追踪对象的修改,一般设置False
SQLALCHEMY_TRACK_MODIFICATIONS =False

exts.py为了解决循环调用,单独把SQLAlchemy独立成在一个文件中

from flask_sqlalchemy import SQLAlchemy     #导入模块
db = SQLAlchemy()

Models.py模型类,用来生成数据库表

from exts import db     #导入db模块,设置字段

class UserInfo(db.Model):
    #指定表名,没有就用类名做表名
    __tablename__=user_info
    #id设置为主键并且自动增长
    id=db.Column(db.Integer,primary_key=True,autoincrement=True)
    username=db.Column(db.String,nullable=False)

数据迁移

 

 

 

二、ORM操作(增删改查)     https://blog.csdn.net/weixin_42750983/article/details/82431257

1.增加数据    (flask中修改数据后需要添加事务和提交事务)

#实例化模型类作为一条记录
document = Post(author_id=user_id, title=request.form[title], body=request.form[corpus], created=d_time,has_edited=True)     #将值对应字段传入

db.session.add(document)    #把新创建的记录添加到数据库会话
db.session.commit()        #提交到数据库会话

#如果add多条记录可以使用add_all()一次添加包含多条记录的列表
db.session.add_all([document1,document2,document3])

2.查询数据

通过query属性调用各种过滤方法完成查询      模型类.query.过滤方法

 示例

all():查询全部的数据,其结果是一个列表,每一个元素都是一个对象  
           students = Student.query.all()
order_by():查询按序排列
get(): 直接写查询条件

过滤查询:
    1.filter   查询结果是objects,格式:对象.属性==
    studnets = Student.query.filter(Student.id==1)
    2.filter_by   查询结果是objects
    students = Student.query.filter_by(id=1)
    3.原生sql查询id=1的信息
    sql = select * from student where id=1;
    students = db.session.execute(sql)

模糊查询:
    语法:filter(模型名.属性.运算符(xx))

3.修改数据

思路:获取到需要修改的对象,通过对象.属性的方式将属性重新赋值,然后使用commit提交事务

写法1:查询出需要修改对象,通过对象.属性方式修改

students = Student.query.filter_by(s_id=3).first()
students.s_name = 哈哈
db.session.commit()

写法2:通过update修改

Student.query.filter_by(s_id=3).update({s_name:娃哈哈})
db.session.commit()

4.删除数据

思路:查询出需要删除的对象,调用db.session.delete(记录对象)实现,然后db.session.commit()提交会话

写法1:

students = Student.query.filter_by(s_id=2).first()
db.session.delete(students)
db.session.commit()

写法2:

students = Student.query.filter_by(s_id=1).all()
db.session.delete(students[0])
db.session.commit()

 

三、HTTP请求

GET提交的数据会放在URL中,以?分割URL的传输数据
POST方法是把提交的数据放在HTTP包的请求体中

从flask中导入request对象

from flask import request

1.GET请求使用request获取url中数据

访问:http://127.0.0.1:5000/name?page=1

使用request的属性获取url
request.path                     /name
request.full_path              /name?page=1
request.values[page]         1        #获取参数page的值
request.args.get(page)      1        #和上面一样也是获取参数page的值

代码示例

@app.route(/name,methods=[POST,GET])
def hello_world():
    print(request.values[page])    #1      #获取路由传递参数
    print(request.args.get(page))   #1

    return Hello World!

2.POST请求    post请求:会给服务器提交一些数据

先了解一下render_template:会去flask根目录下的template里面寻找文件,所以给的路径是相对路径

代码示例:将数据search_result和title传递到blog/index.html中

return render_template("blog/index.html", search=search_result, title=title)

request.form是专门用来针对表单数据的

request.form.get(username)    #form表单设置的name值username
request.form.get(password)     #form表单设置的name值password

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

------------恢复内容结束------------

Flask运行流程

原文:https://www.cnblogs.com/wangcuican/p/13089953.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!