1.首先创建app文件夹

同django 创建app 一样 创建文件

在创建的views中写入两个蓝图函数为了操作数据库的增删改查

acc.py

from flask import Blueprint

acc = Blueprint("acc",__name__)

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

在__init__.py下写入create_app()函数

from flask import Flask
from app.views.acc import acc
from app.views.user import user
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
session=db.session
def create_app(): my_app =Flask(__name__) my_app.register_blueprint(acc)
my_app.register_blueprint(user) return my_app if __name__ == '__main__':
app=create_app()
app.run()

若运行成功,就完成重要的第一步了

第二步创建数据库表名

在models.py 内创建数据

from app import db

class User(db.Model):

    __tablename__ ="user"
__table_args__ = {"useexisting":True} id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(32)) if __name__ == '__main__':
from app import create_app
my_app = create_app() db.drop_all(app=my_app)
db.create_all(app=my_app)

观察发现没有engine可以连接数据库

解决 :在__init__下写为

from flask import Flask
from app.views.acc import acc
from app.views.user import user
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
session=db.session
def create_app(): my_app =Flask(__name__) my_app.config["SQLALCHEMY_DATABASE_URI"]="mysql+pymysql://root:@127.0.0.1:3306/day128?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 db.init_app(my_app)
my_app.register_blueprint(acc)
my_app.register_blueprint(user)
return my_app

db=db = SQLAlchemy()   db.model  相当于 Base()

这个时候就会发现数据库增加一张user表

第三部 进行数据的增添

在创建的user.py蓝图中,进行操作

from flask import Blueprint,jsonify

user = Blueprint("user",__name__)

@user.route("/user")

def user_func():

    from app.models import User
from app import db
user_obj = User(name="zq")
db.session.add(user_obj)
db.session.commit()
return "这是user蓝图" @user.route("/user_list")
def user_list():
from app.models import User res = User.query.first()
ret ={"username":res.name} return jsonify(ret)

为了仿照django,在manager.py进行启动

这里用到了装饰器

from flask_script import Manager
@manager.command
 
import MyApp
# 导入 Flask-Script 中的 Manager
from flask_script import Manager app = MyApp.create_app()
# 让app支持 Manager
manager = Manager(app) if __name__ == '__main__':
#app.run()
# 替换原有的app.run(),然后大功告成了
manager.run() MyApp/manager.py
Manager的两种用法
@manager.command
def runflask():
my_app.run()
return "成功"
#第一种就是通过终端启动程序,输入python manager.py runflask
#即可运行经过@manager.command 装饰的函数,就这相当于在终端启动了程序
同django的python manager.py runserver @manager.option("-n","--name",dest="name")
def run_flask(name="127.0.0.7",say="5000"):
a=input("真的启动me?")
if a=='y':
my_app.run(name,int(say))
else:
return f"{name}真{say}" #第二种装饰器@manager.opation("-短指令","--长指令",dest="变量名")
# 输入python manager.py run_flask 即可以进行传参的装饰器
如下详解
@manager.option("-n","--name",dest="name")
 
import MyApp
# 导入 Flask-Script 中的 Manager
from flask_script import Manager app = MyApp.create_app()
# 让app支持 Manager
manager = Manager(app) # type:Manager @manager.command
def DragonFire(arg):
print(arg) @manager.option("-n","--name",dest="name")
@manager.option("-s","--say",dest="say")
def talk(name,say):
print(f"{name}你可真{say}") if __name__ == '__main__':
#app.run()
# 替换原有的app.run(),然后大功告成了
manager.run() MyApp/manager.py

通过上述例子了解到可以进行 my_app.run(name,int(say))

前后输入 "127.0.0.1" 5000 即可

第四步 Migrate进行数据库迁移

在manager.py引用

from flask_migrate import Migrate,MigrateCommand

举例
import MyApp
# 导入 Flask-Script 中的 Manager
from flask_script import Manager # 导入 Flask-Migrate 中的 Migrate 和 MigrateCommand
# 这两个东西说白了就是想在 Flask-Script 中添加几个命令和指令而已
from flask_migrate import Migrate,MigrateCommand app = MyApp.create_app()
# 让app支持 Manager
manager = Manager(app) # type:Manager # Migrate 既然是数据库迁移,那么就得告诉他数据库在哪里
# 并且告诉他要支持那个app
Migrate(app,MyApp.db)
# 现在就要告诉manager 有新的指令了,这个新指令在MigrateCommand 中存着呢
manager.add_command("db",MigrateCommand) # 当你的命令中出现 db 指令,则去MigrateCommand中寻找对应关系
"""
数据库迁移指令:
python manager.py db init
python manager.py db migrate # Django中的 makemigration
python manager.py db upgrade # Django中的 migrate
""" @manager.command
def DragonFire(arg):
print(arg) @manager.option("-n","--name",dest="name")
@manager.option("-s","--say",dest="say")
def talk(name,say):
print(f"{name}你可真{say}") if __name__ == '__main__':
#app.run()
# 替换原有的app.run(),然后大功告成了
manager.run() MyApp/manager.py

我的manage.py

import app
from flask_script import Manager
from flask_migrate import Migrate,MigrateCommand my_app = app.create_app()
manager=Manager(my_app) from app import db
Migrate(my_app,db) manager.add_command("database",MigrateCommand) @manager.command
def runflask():
my_app.run()
return "成功" @manager.option("-n","--name",dest="name")
def run_flask(name="127.0.0.7",say="5000"):
a=input("真的启动me?")
if a=='y':
my_app.run(name,int(say))
else:
return f"{name}真{say}" if __name__ == '__main__':
manager.run()

在终端输入

python manager.py database init
python manager.py database migrate
python manager.py database migrated

SQLAlchemy的应用创建的更多相关文章

  1. SQLAlchemy 使用(一)创建单一model

    前言 最近项目等待前端接接口,比较空闲.就想学习一些新东西.学啥呢?考虑到ORM的易用性,还是学习一下ORM.那么与Flask搭配的ORM有 flask-sqlalchemy 但是该组件专为Flask ...

  2. SQLAlchemy通过models创建数据库表

    原地址:http://blog.csdn.net/jmilk/article/details/53184903 定义数据模型 models SQLAlchemy 允许我们根据数据库的表结构来创建数据模 ...

  3. falsk sqlalchemy 自关联创建评论回复数据库

    本项目在于创建类似微信上的评论回复功能的数据库 基类: from app import db from datetime import datetime class Basemadel(object) ...

  4. 冰冻三尺非一日之寒-mysql(orm/sqlalchemy)

    第十二章  mysql ORM介绍    2.sqlalchemy基本使用 ORM介绍: orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似pyt ...

  5. 20.Python笔记之SqlAlchemy使用

    Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...

  6. SQLAlchemy模型使用

    SQLAchemy模型使用 简介: SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用 ...

  7. SQLAlchemy 增删改查 一对多 多对多

    1.创建数据表 # ORM中的数据表是什么呢? # Object Relation Mapping # Object - Table 通过 Object 去操纵数据表 # 从而引出了我们的第一步创建数 ...

  8. SQLAlchemy介绍

    SQLAlchemy 增删改查 一对多 多对多   Python 的 ORM 框架 SQLAlchemy 有些同学已经听说过这个框架的大名了,也听说了 SQLAlchemy 没有 Django 的 M ...

  9. 连接mysql数据库,创建用户模型

    1.安装与配置python3.6+flask+mysql数据库 (1)下载安装MySQL数据库 (2)下载安装MySQL-python 中间件 (3)pip install flask-sqlalch ...

随机推荐

  1. 图文讲解Android ImageView的ScaleType

    ScaleType的设置方式包括: 1. 在layout的xml中定义android:scaleType="xxx": 2. 在java代码中调用imageView.setScal ...

  2. [Swoole入门到进阶] [公开课] Swoole协程-Swoole4.4.4 提供 WaitGroup 功能

    在 Swoole4 中可以使用 channel 实现协程间的通信.依赖管理.协程同步. 简单来说,WaitGroup 就是使用 channel 的机制,让主协程等待所有子协程结束后才退出的功能. Co ...

  3. BatchConfigTool批量配置工具

    海康批量配置工具BatchConfigTool是一款支持设备在线搜索.批量配置参数.批量升级等功能的软件,支持对大批量设备同时进行各参数的配置,极大的简化了操作过程! 软件功能 1.对在线设备进行搜索 ...

  4. Hadoop 3.1.2 + Hive 3.1.1

    一.安装Hadoop 1.1 版本说明 hadoop:3.1.2hive:3.1.1mysql:5.6.40 1.2 主机映射 添加IP与主机名的映射关系,在/etc/hosts文件里添加如下内容(所 ...

  5. LeetCode 453. 最小移动次数使数组元素相等(Minimum Moves to Equal Array Elements) 47

    453. 最小移动次数使数组元素相等 453. Minimum Moves to Equal Array Elements 题目描述 给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移 ...

  6. [转帖]70亿!以色列间谍产品公司NSO要被卖掉了

    70亿!以色列间谍产品公司NSO要被卖掉了 2017-06-14 11:11 https://www.sohu.com/a/148739327_257305 E安全6月14日讯以色列的网络能力处于世界 ...

  7. pyhthon Opencv截取视频中的图片

    import os import cv2 ##加载OpenCV模块 def video2frames(pathIn='', pathOut='', imgname='', only_output_vi ...

  8. Java高频面试题--单例设计模式

  9. Partition5:Partiton Scheme是否指定Next Used?

    在SQL Server中,为Partition Scheme多次指定Next Used,不会出错,最后一次指定的FileGroup是Partition Scheme的Next Used,建议,在执行P ...

  10. Linux中使用MegaCli工具查看、管理Raid卡信息

    MegaCli是一款管理维护硬件RAID软件,可以通过它来了解当前raid卡的所有信息,包括 raid卡的型号,raid的阵列类型,raid 上各磁盘状态,等等.通常,我们对硬盘当前的状态不太好确定, ...