微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flask运行流程

一、配置数据库信息

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐