一.手动创建一个干净的含有蓝图的flask项目目录

在init.py中

from flask  import Flask

my_app=Flask(__name__)

def create_app():
   return my_app

在manager.py中

import app
if __name__=="__main__":
   my_app=app.create_app()
   my_app.run()

结果:这样运行manager.py脚本就相当于运行了整个app

在acc.py中

from flask import Blueprint
acc=Blueprint("acc",__name__)

@acc.route("/acc")
def acc_func():
   return "acc蓝图页面"

在user.py中

from flask import Blueprint
user=Blueprint("user",__name__)

@user.route("/user")
def user_func():
  return "user的蓝图页面"

在init.py中注册这两个蓝图

from flask  import Flask

my_app=Flask(__name__)
from app.views.acc import acc
from app.views.user import user

def create_app():
   ###########注册蓝图############
   my_app.register_blueprint(acc)
   my_app.register_blueprint(user)
   ##############################
   return my_app

结果:在acc.py和user.py中分别创建两个蓝图作为项目的两个应用

最终以上操作得到了一个干净的含有蓝图的flask项目目录结构(flask官方建议)

二.Flask-SQLAlchemy的使用

1.Flask-SQLAlchemy的导入,配置,以及数据表的创建

在init.py中

from flask import Flask

################1.导入SQLAlchemy,并实例化#################
from flask_sqlalchemy import SQLAlchemy
db=SQLAlchemy()
#########################################################

my_app=Flask(__name__)
from app.views.acc import acc
from app.views.user import user

def create_app():
#####################数据库配置#########################
   my_app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:@127.0.0.1:3306/day127?charset=utf8"
   # SQLALCHEMY_POOL_SIZE 配置 SQLAlchemy 的连接池大小
   my_app.config["SQLALCHEMY_POOL_SIZE"] = 5
   # SQLALCHEMY_POOL_TIMEOUT 配置 SQLAlchemy 的连接超时时间
   my_app.config["SQLALCHEMY_POOL_TIMEOUT"] = 15
   my_app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
   
###3.此时的SQLAlchemy与flask没有关系,初始化之后才能绑定关系########
   db.init_app(my_app)
#########################################################

   #注册项目中的蓝图
   my_app.register_blueprint(acc)
   my_app.register_blueprint(user)
   return my_app

在model.py中

from app import db,create_app

#1.创建表关系类
# Base=db.Model   #相当于Django中的Model
class User(db.Model):
   __tablename__='user'
   id=db.Column(db.Integer,primary_key=True)
   name=db.Column(db.String(32),index=True)

if __name__ == '__main__':
#2.获取数据库配置  
   my_app=create_app()
   #db.drop_all(app=my_app) #清空继承db.Model的所有数据表
#3.创建my_app中所有关系表    
   db.create_all(app=my_app)
#此处涉及离线脚本  

2.Flask-SQLAlchemy的增删改查

在user蓝图中

from flask import Blueprint,jsonify
user=Blueprint("user",__name__)

from app import db
from app.model import User

###########向User表中添加数据###########
@user.route("/useradd")
def user_func():
   user_obj=User(name="shy")
   db.session.add(user_obj)
   db.session.commit()
   return "user的蓝图页面"

###########查询User表中的数据###########
@user.route("/userlist")
def userlist():
   res__all=User.query.all()
   res_one=User.query.first()
   # print(res_all) #[<User 1>]
   ret={"名字":res_one.name}
   return jsonify(ret) #{"\u540d\u5b57":"shy"}

###########更改User表中的数据###########
@user.route("/userupdate")
def userupdate():
   user_obj=User.query.first()
   user_obj.name="jwb"
   db.session.commit()
   return "更改完成"

###########删除User表中的数据###########
@user.route("/userdelete")
def userdelete():
   user_obj=User.query.first()
   db.session.delete(user_obj)
   db.session.commit()
   return "删除完成"

3.Flask-Script的使用

注:使用之前先下载Flask-Script包

(1)在终端运行启动项目
import app
from flask_script import Manager
my_app=app.create_app()
manager=Manager(my_app)

if __name__=="__main__":
   manager.run()
在终端中(项目目录下)运行:python manager.py runserver即可启动项目

指定IP和端口启动:python manager.py runserver -h 0.0.0.0 -p 9527
(2)Flask-Script的其他功能
import app
from flask_script import Manager
my_app=app.create_app()
manager=Manager(my_app)

#############################################
@manager.command
def add(a):
   return a+a
#终端输入:python manager.py add 6
#得到:66

#############################################
@manager.command
def runflask():
   my_app.run()
   return "运行结束"
#终端输入:python manager.py runflask
#结果:程序运行结束或退出时打印

#############################################
@manager.option("-n","--name",dest="name") #-n 是--name的简写
@manager.option("-s","--say",dest="adj")
def open_flask(name,adj):
   return f"{name}真{adj}" #我真好看
#启动时得到一些值用于配置或其他

#############################################
@manager.option("-n","--name",dest="name") #-n 是--name的简写
@manager.option("-s","--say",dest="adj")
def open_flask_run(name,adj):
   my_app.run(name,int(adj))
   return f"{name}真{adj}" #我真好看
#终端输入:python manager.py open_flask_run -n 0.0.0.0 -s 9527
#结果:程序在http://0.0.0.0:9527/ 上运行

#############################################
@manager.option("-n","--name",dest="name") #-n 是--name的简写
@manager.option("-s","--say",dest="adj")
def open_flask_run_question(name,adj):
   res=input("真的要启动吗")
   if res=="y":
       my_app.run(name,int(adj))
   else:
       return "不启动拉倒"
#可以在启动前提问问题,用于配置或其他

#############################################
@manager.option("-n","--name",dest="name") #-n 是--name的简写
@manager.option("-s","--say",dest="adj")
def open_flask_run_question_moren(name="19.168.13.12",adj=9527):
   res=input("真的要启动吗")
   if res=="y":
       my_app.run(name,adj)
   else:
       return "不启动拉倒"
#参数可以有默认值
#############################################

if __name__=="__main__":
   manager.run()

4.Flask-Migrate(数据库迁移)

注:Flask-Migrate一定要基于Flask-Script使用

import app
from flask_script import Manager
from flask_migrate import Migrate,MigrateCommand
from app import db

##############################
my_app=app.create_app()
manager=Manager(my_app)

Migrate(my_app,db)
manager.add_command("database",MigrateCommand)
##############################

@manager.command
def add(a):
   return a+a
#终端输入:python manager.py add 6
#得到:66

if __name__=="__main__":
   manager.run()

终端运行:

python manager.py database init
python manager.py database migrate #相当于Django中的makemigration
python manager.py database upgrade #相当于Django中的migrate

python manager.py database init 结果:项目中出现一个migrations文件夹

flask相关使用的更多相关文章

  1. nginx uwsgi flask相关配置

    一.安装Nginx 在 /home/download下下载压缩包 wget https://nginx.org/download/nginx-1.12.2.tar.gz 解压缩 tar zxvf ng ...

  2. 第四篇 与Flask相关的插件(flask-session、wtforms)

    公司中使用SQL的种方式: 1. 写Django:ORM(关系对象映射), 2. 写Flask和其他:有两种方式: (1) 原生SQL:使用原生SQL有两种选择: A. pymysql (python ...

  3. 自动化运维:网站svn代码上线更新(flask+saltstack)

    阶段性总结:      跌跌撞撞的用了一周左右的时间做完了网站自动升级功能,中间遇到了很多的问题,也学到了很多,在此做一个总结.   1.整体架构: 后台:nginx+uwsgi  #nginx提供w ...

  4. Inside Flask - app.py - 2

    Inside Flask - app.py - 2 Flask 初始化参数 Flass 类是 Flask 框架的核心,一个 flask 对象处理视图函数注册.URL规则.模板配置.参数设置等等. 一般 ...

  5. centos+nginx+uwsgi+virtualenv+flask 多站点环境搭建

    环境: centos x64 6.6 nginx 1.6.2 python 2.7.9 uwsgi 2.0.9 virtualenv 12.0.5 flask 0.10.1 正文: 1.安装nginx ...

  6. 【Flask】 利用uWSGI和Nginx发布Flask应用

    因为Flask比较容易上手,之前也拿flask写过几个小项目,不过当时天真地以为只要在服务器上nohup跑一个python脚本就算是成功发布了这个flask项目.实际上这还面临很多问题,比如并发性不好 ...

  7. flask框架詳解

    https://www.cnblogs.com/sss4/p/8097653.html 前言: Django:1个重武器,包含了web开发中常用的功能.组件的框架:(ORM.Session.Form. ...

  8. PythonWEB框架之Flask

    前言: Django:1个重武器,包含了web开发中常用的功能.组件的框架:(ORM.Session.Form.Admin.分页.中间件.信号.缓存.ContenType....): Tornado: ...

  9. flask+apache+mod-wsgi部署遇到的坑

    首先,看到这种方式部署,我也有疑问,为什么不用nginx,gunicorn.接手的项目,就先按照前人思路run起来. 线上使用ubuntu系统,apache2,而给我玩耍的测试机是centos6.5, ...

随机推荐

  1. delphi之IOCP学习(一)

    困扰已久的网络通信(IOCP:完成端口),今天终于揭开她的神秘面纱了,之前百度N久还是未能理解IOCP,网络上好多博文都没有贴出源码,初学者很难正在理解IOCP并自己写出通信例子 ,经过努力,今天自己 ...

  2. python 读写XLS

    需要库: xlrd, xlwt, xlutils 导入 import xlrd from xlutils.copy import copy 打开文件 data = xlrd.open_workbook ...

  3. [Scikit-Learn] - 数据预处理 - 归一化/标准化/正则化

    reference: http://www.cnblogs.com/chaosimple/p/4153167.html 一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/ ...

  4. MFC和Qt优缺点 (MFC几乎没有优点、全面下风)

    在网上看到的,拿来和大家一起讨论下. 我曾经使用过来开发过软件,我想和大家分享我使用他们时所体会的不同之处. 我并非一个职业作家,这篇文章可能看起来不如专业的杂志和网站上的那么条理清晰.但是,我在这里 ...

  5. python 教程 第四章、 控制流

    第四章. 控制流 控制语句后面要加冒号: 1)    if语句 if guess == number: print 'Congratulations, you guessed it.' # New b ...

  6. C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码

    原文:C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码 C#WPF 如何绘制几何图形? 怎么绘制坐标系?绘制sin曲线(正弦曲线)? 这离不开Path(Syst ...

  7. 机器学习: Tensor Flow with CNN 做表情识别

    我们利用 TensorFlow 构造 CNN 做表情识别,我们用的是FER-2013 这个数据库, 这个数据库一共有 35887 张人脸图像,这里只是做一个简单到仿真实验,为了计算方便,我们用其中到 ...

  8. Post utf-8 请求

    /// <summary> /// POST请求与获取结果 /// </summary> public static string HttpPost(string Url, s ...

  9. Web service的学习资源

    看了半天的Web service,总算是对它有了一点眉目,不枉此行:)那就整理一下吧,来日还需要用到呢! 1.什么是Web service(请看这儿). 2.Web service的开发        ...

  10. Win8 Metro(C#)数字图像处理--2.59 P分位法图像二值化

    原文:Win8 Metro(C#)数字图像处理--2.59 P分位法图像二值化  [函数名称]   P分位法图像二值化 [算法说明]   所谓P分位法图像分割,就是在知道图像中目标所占的比率Rat ...