一、配置数据库信息
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
------------恢复内容结束------------
原文:https://www.cnblogs.com/wangcuican/p/13089953.html