flask相关使用
一.手动创建一个干净的含有蓝图的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相关使用的更多相关文章
- nginx uwsgi flask相关配置
一.安装Nginx 在 /home/download下下载压缩包 wget https://nginx.org/download/nginx-1.12.2.tar.gz 解压缩 tar zxvf ng ...
- 第四篇 与Flask相关的插件(flask-session、wtforms)
公司中使用SQL的种方式: 1. 写Django:ORM(关系对象映射), 2. 写Flask和其他:有两种方式: (1) 原生SQL:使用原生SQL有两种选择: A. pymysql (python ...
- 自动化运维:网站svn代码上线更新(flask+saltstack)
阶段性总结: 跌跌撞撞的用了一周左右的时间做完了网站自动升级功能,中间遇到了很多的问题,也学到了很多,在此做一个总结. 1.整体架构: 后台:nginx+uwsgi #nginx提供w ...
- Inside Flask - app.py - 2
Inside Flask - app.py - 2 Flask 初始化参数 Flass 类是 Flask 框架的核心,一个 flask 对象处理视图函数注册.URL规则.模板配置.参数设置等等. 一般 ...
- 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 ...
- 【Flask】 利用uWSGI和Nginx发布Flask应用
因为Flask比较容易上手,之前也拿flask写过几个小项目,不过当时天真地以为只要在服务器上nohup跑一个python脚本就算是成功发布了这个flask项目.实际上这还面临很多问题,比如并发性不好 ...
- flask框架詳解
https://www.cnblogs.com/sss4/p/8097653.html 前言: Django:1个重武器,包含了web开发中常用的功能.组件的框架:(ORM.Session.Form. ...
- PythonWEB框架之Flask
前言: Django:1个重武器,包含了web开发中常用的功能.组件的框架:(ORM.Session.Form.Admin.分页.中间件.信号.缓存.ContenType....): Tornado: ...
- flask+apache+mod-wsgi部署遇到的坑
首先,看到这种方式部署,我也有疑问,为什么不用nginx,gunicorn.接手的项目,就先按照前人思路run起来. 线上使用ubuntu系统,apache2,而给我玩耍的测试机是centos6.5, ...
随机推荐
- 基于go语言的心跳响应
我们在使用tcp ip 通讯的时候,都需要使用心跳机制来判断服务器与客户端的连接状态,如果服务器的心跳超时等,会做出重新连接等机制, 基于这种问题,我今天给大家推荐了一个基于go语言的心跳响应机制,废 ...
- 一款有意思的 Qt 飞行仪表控件
最近在网上偶然发现一款Qt飞行仪表板控件,真的很酷哦! 是一款开源软件, 直接编译运行: 美工还是不错的! 控件操作非常简单: void MainWindow::timerEvent( QTimer ...
- Light libraries是一组通用的C基础库,目标是为减少重复造轮子而写(全部用POSIX C实现)
Light libraries是一组通用的C基础库,目标是为减少重复造轮子而写实现了日志.原子操作.哈希字典.红黑树.动态库加载.线程.锁操作.配置文件.os适配层.事件驱动.工作队列.RPC.IPC ...
- [Linux] ssh秘钥对免密码登陆
准备两台linux服务器 a和b , 在a上使用ssh命令登陆b服务器 , 并且不用 输入密码 1.在a服务器上,比如是root用户 ,进去/root/.ssh目录 ,没有就创建, 就是进入家目录的. ...
- Win7使用初体验
作者:朱金灿 来源:http://blog.csdn.net/clever101 最近装了个Win7旗舰版.随着年纪渐大,我对软件使用越来越趋于务实,不再追求最新版本,因为我评价一个好软件的标准是适用 ...
- python 合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 样例 给出 1->3->8->11->15->null,2-& ...
- wpf之3d基础
原文:wpf之3d基础 关于3D方面的东西,本人只是浅尝辄止,从未曾在项目中使用过,相信有不少人也是基于一份兴趣去学习.这里将展示几个基本的WPF 3D编程,希望对初学者有一定帮助. 为帮助理解,这里 ...
- Ninject之旅之十四:Ninject在ASP.NET Web Form程序上的应用(附程序下载)
摘要 ASP.NET Web Forms没有像MVC那样的可扩展性,也不可能使它创建UI页面支持没有构造函数的的激活方式.这个Web Forms应用程序的的局限性阻止了它使用构造函数注入模式,但是仍能 ...
- python3给图片添加水印
#!/usr/local/bin/python3 #coding=gbk import os, io, sys, re, time, json, random from PIL import Imag ...
- ASP.NET Core 属性路由 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 属性路由 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 属性路由 经过前面章节的学习,想必你已经对 ASP.NET Core ...