一、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. 去掉img与img之间,video与video之间默认的间距(3种方式)

    img,video{ /*第1种方式*/ border:; vertical-align: bottom; /*第2种方式*/ outline-width:0px; vertical-align:to ...

  2. MySQL---数据库切分

    3.切分 水平切分   水平切分又称为sharding,它是将同一个表的记录拆分到多个结构相同的表中.当一个表的数据不断的增加的时候,sharding是必然的选择,它可以将数据分布到集群的不同节点上, ...

  3. python3中编码与解码的问题

    python3中编码与解码的问题 ASCII .Unicode.UTF-8 ASCII 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此 ...

  4. DRF框架之视图类

    前后端分离的项目 >: pip3 install djangorestframework   一.视图类传递参数给序列化类 视图层:views.py 需求: (1)在视图类中实列化对象是,可以设 ...

  5. wpf textblock 长文本滚动

    在textblock添加滚动条 <ScrollViewer VerticalScrollBarVisibility="Auto"> <TextBlock x:Na ...

  6. 不启动或进入虚拟机,查看 KVM 虚拟机中的网卡信息

    #!bin/bash#作者:liusingbon#功能:#脚本使用工具guestmount,可以将虚拟机的磁盘系统挂载到真实机文件系统中#Centos7.2中安装libguestfs-tools-c, ...

  7. IsNumeric 函数

    VB IsNumeric 判断数字函数功能详解: IsNumeric 函数 函数功能:     返回 Boolean 值,指出表达式的运算结果是否为数. 函数语法:     IsNumeric (ex ...

  8. 03python面向对象编程3

    案例学习 # notebook.pyimport datetime # Store the next available id for all new notes last_id = 0 class ...

  9. R语言-三种方法绘制单位圆

    与一般开发语言不同,R以数据统计分析和绘图可视化为主要卖点.本文是第一篇博客,解决一个简单的绘图问题,以练手为目的. 以下直接给出三种单位圆的画法: 方法1 f=seq(,*pi,0.001) x=s ...

  10. springSecurity安全框架

    一.是什么 是一种基于 Spring AOP 和 Servlet 过滤器的安全框架,对访问权限进行控制 二.作用 1.认证 用户名和密码认证,核对是否正确 2.授权 若正确,给予登录用户对应的访问权限 ...