一、flask_sqlalchemy组件

我们之前学过SQLAlchemy,一个独立的数据库关系对象映射,其实在flask中也有官方认可的第三方SQLAlchemy组件,用于处理flask中对象关系映射。

1.安装flask_sqlalchemy

pip install flask_sqlalchemy

2.项目准备

我们准备一个干净的flask项目,目录结构如下,下面我们基于这个项目,加入flask_sqlachemy使项目操作数据库。

1.加入flask_sqlalchemy组件

flask_sqlalchemy_project/__init__.py

from flask import Flask

# 导入Flask-SQLAlchemy中的SQLAlchemy
from flask_sqlalchemy import SQLAlchemy

# 实例化SQLAlchemy
db = SQLAlchemy()
# PS : 实例化SQLAlchemy的代码必须要在引入蓝图之前

from flask_sqlalchemy_lesson.views import user

def create_app():
app = Flask(__name__)

# 初始化App配置 这个app配置就厉害了,专门针对 SQLAlchemy 进行配置
# SQLALCHEMY_DATABASE_URI 配置 SQLAlchemy 的链接字符串儿
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:DragonFire@127.0.0.1:3306/dragon?charset=utf8"
# SQLALCHEMY_POOL_SIZE 配置 SQLAlchemy 的连接池大小
app.config["SQLALCHEMY_POOL_SIZE"] = 5
# SQLALCHEMY_POOL_TIMEOUT 配置 SQLAlchemy 的连接超时时间
app.config["SQLALCHEMY_POOL_TIMEOUT"] = 15
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False

# 初始化SQLAlchemy , 本质就是将以上的配置读取出来
db.init_app(app)

app.register_blueprint(user)

return app

2.建立models.py文件,ORM模型文件

from flask_sqlalchemy import SQLAlchemy
from flask_sqlalchemy_lesson import db

# Base = db.Model # 这句话你是否还记的?
# from sqlalchemy.ext.declarative import declarative_base
# Base = declarative_base()
# 每一次我们在创建数据表的时候都要做这样一件事
# 然而Flask-SQLAlchemy已经为我们把 Base 封装好了

# 建立User数据表
class Users(db.Model):
# 指定一个表名
__tablename__="user_flask" # 在SQLAlchemy 中我们是导入了Column和数据类型 Integer 在这里就和db.Model一样,已经封装好了
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(32),nullable=False)

if __name__ == '__main__':
from day101_SQLAlchemy.flask_sqlalchemy_lesson import create_app # 导入数据库的
app = create_app()
db.create_all(app=app)

3.蓝图函数中user.py

from flask import Blueprint
from day101_SQLAlchemy.flask_sqlalchemy_lesson.models import Users,db

user_bp = Blueprint("user_bp",__name__)


@user_bp.route("/add_user/<username>",methods=["GET","POST"])
def add_user(username):
u = Users(name=username)
db.session.add(u) # 打开数据库连接窗口
db.session.commit()
return "200 add success"

@user_bp.route("/get_user/<username>",methods=["GET","POST"])
def get_user(username):
u = Users.query.filter(Users.name == username).first()
return u.name

4.运行项目manage.py文件

from day101_SQLAlchemy.flask_sqlalchemy_lesson import create_app

app = create_app()

if __name__ == '__main__':
app.run()

运行项目,就可以访问add_user和get_user来添加数据可查询数据了。

Flask框架—flask_sqlalchemy组件使用的更多相关文章

  1. flask框架----flask-session组件

    简介 flask-session是flask框架的session组件,由于原来flask内置session使用签名cookie保存,该组件则将支持session保存到多个地方,如: redis:保存数 ...

  2. flask框架----flask-script组件

    Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任 ...

  3. Flask框架【七】—session组件详解

    一.flask session简介 flask中session组件可分为内置的session组件还有第三方flask-session组件,内置的session组件缺点: 功能单一 session是保存 ...

  4. flask框架+pygal+sqlit3搭建图形化业务数据分析平台

    一. 前言 先说下主要的框架和主要的图形库的特点:(个人见解) Django:python开发的一个重量级的web框架,集成了MVC和ORM等技术,设计之初是为了使开发复杂的.数据库驱动的网站变得简单 ...

  5. Flask框架搭建一个日程表

    目录 前言 项目介绍 技术栈 Flask Web开发流程 一.搭建环境 1.1: 创建虚拟环境 1.2: 安装依赖包 1.3: 创建依赖包列表文件 1.4: 测试hello word 二.应用程序开发 ...

  6. flask之三方组件

    Flask-session Flask-session跟框架自带的session有什么区别呢 框架自带的session是通过请求上下文~放入到Local中的~那如果我们想把session放入别的地方怎 ...

  7. 一线Python运维开发带你秒懂Flask框架

    相信曾经纠结过这个问题:怎样才能彻底掌握flask? Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . ...

  8. Python之Flask框架项目Demo入门

    Python+Flask框架项目Demo入门 本例子用到了 Flask+蓝图+Flask-Login+SQLAlchemy+WTForms+PyMySQL相关架构 Flask Web框架介绍 Flas ...

  9. Python自动化运维之30、Flask框架

    Flask 官网:http://flask.pocoo.org/ flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是 ...

随机推荐

  1. 我的第一个Delphi DLL

    library dd; { 使用字符串参数或嵌套字符串参数需要在uses子句中包括sharemm单元,并将BorlandMM.dll与您的应用程序一起发布. 否则需要对参数值使用PChar或Short ...

  2. PHP通过exec执行git pull

    目标 项目没有使用Jenkins部署,使用的是Gitlab+ECS,要实现代码的自动部署 想法 使用Gitlab的钩子,当某个分支的代码提交之后,访问一个URL,实现代码的自动部署.这里使用PHP的e ...

  3. Bootstrap table 实现树形表格,实现联动选中,联动取消

    公司最近有需求要做树形式table.因为是前后端不分离项目,且之前已经引入了bootstrap table插件,现把实现方式分享一下: <!DOCTYPE HTML> <html l ...

  4. 防抖&节流

    使用的原因 在前端开发当中有一部分的用户行为会频繁操作触发事件执行,而对于DOM操作,资源加载等耗费性能的处理,很可能导致页面卡顿,甚至浏览器崩溃,函数节流和防抖就是解决类似需求应运而生的 节流 预定 ...

  5. ffmpeg使用分析视频

    https://www.cnblogs.com/Finley/p/8646711.html 先存下

  6. 强化学习(Reinfment Learning) 简介

    本文内容来自以下两个链接: https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/ https: ...

  7. GUI学习之十九——QFontComboBox学习总结

    我们上一章学习了QComboBox的用法,这一章我们来看一下它的一个比较常用的子类:QFontComboBox(). 一.描述: QFontComboBox()是QComboBox()的一个子类,但是 ...

  8. 如何判断系统是32位还是64位的linux系统

    如何判断系统是32位还是64位的linux系统 某日,需要下载个安装包,忽然忘记了自己的系统是32位还是64位的系统了,一时想不起来怎么查看时32位还是64位,呵呵,随便百度下,就发现有好多方法,这里 ...

  9. axios中put和patch的区别(都是update , put是需要提交整个对象资源,patch是可以修改局部)

    patch方法用来更新局部资源,这句话我们该如何理解? 假设我们有一个UserInfo,里面有userId, userName, userGender等10个字段.可你的编辑功能因为需求,在某个特别的 ...

  10. 计算两个GPS坐标的距离

    场景:已知两个GPS点的经纬度坐标信息.计算两点的距离. 1. 距离/纬度关系 GPS: 22.514519,113.380301 GPS: 22.511962,113.380301 距离: 284. ...