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=""):
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=""):
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之创建表,删除表

    1.创建引擎 "数据库+第三方模块://用户名:密码@数据库服务端IP:端口号/数据库名?编码" engine = create_engine( "mysql+pymys ...

  2. sqlalchemy 多线程 创建session

    1.基于threding.local,推荐使用 from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine ...

  3. SQLAlchemy连接数据库创建表

    # 连接数据库,创建表 def create_all(): engine = create_engine( 'mysql+pymysql://root:123456@127.0.0.1:3306/sq ...

  4. Python-Web框架之 - 利用SQLALchemy创建与数据库MySQL的连接, 详解用Flask时会遇到的一些大坑 !

    经过这个小项目算是对Django与Flask这两个web框架有了新的认识 , Django本身的轮子非常齐全 , 套路也很固定 , 新手在接触Django框架时 , 不会陷入到处找轮子的大坑 ; 那么 ...

  5. 测开之路一百四十三:ORM框架之SQLAlchemy模型及表创建

    基于前一篇内容,可以使用模型的结构 目录结构 main,入口层 from flask import Flaskfrom flask_sqlalchemy import SQLAlchemy app = ...

  6. SQLAlchemy使用介绍

    SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that gives application developers ...

  7. ORM之SQLALchemy

    今天来聊一聊 Python 的 ORM 框架 SQLAlchemy SQLAlchemy 没有 Django 的 Models 好用!因为models是Django自带的ORM框架,也正是因为是Dja ...

  8. flask 中orm关系映射 sqlalchemy的查询

    flask的orm框架(SQLAlchemy)-一对多查询以及多对多查询   一对多,多对多是什么? 一对多.例如,班级与学生,一个班级对应多个学生,或者多个学生对应一个班级. 多对多.例如,学生与课 ...

  9. flask 使用Flask-Migrate迁移数据库(创建迁移环境、生成迁移脚本、更新数据库)

    使用Flask-Migrate迁移数据库 在开发时,以删除表再重建的方式更新数据库简单直接,但明显的缺陷是会丢掉数据库中的所有数据.在生产环境下,没有人想把数据都删除掉,这时需要使用数据库迁移工具来完 ...

随机推荐

  1. 浅谈C++ STL stack 容器

    浅谈C++ STL stack 容器 本篇随笔简单介绍一下\(C++STL\)中\(stack\)容器的使用方法和常见的使用技巧. stack容器的概念 \(stack\)在英文中是栈的意思.栈是一种 ...

  2. Eclipse查看git中的历史,显示详细时间

    clipse show date details in git history我的eclipse查看git history,显示为相对时间,并不是很方便,想要查看某个具体日期的版本代码,就需要设置为具 ...

  3. Python实现网络多人聊天室 - Windows

    项目名称:多人聊天室项目结构: client.py server.py settings.py项目思路:服务端接收客户端连接,客户端发送信息给服务端,服务端将信息发送给所有客户端.项目实现:主进程负责 ...

  4. springcloud源码分析(一)之采用redis实现注册中心

    注册中心 在分布式架构中注册中心起到了管理各种服务功能包括服务的注册.发现.熔断.负载.降级等功能,在分布式架构中起到了不可替代的作用.常见的注册中心有eureka,zookeeper等等,在spri ...

  5. Qt所有滚动条的样式

    const QString QSS_VerticalScrollBar = "" "QScrollBar:vertical{" //垂直滑块整体 "m ...

  6. lanyu 激活idea

    编辑 C:\Windows\System32\drivers\etc\hosts 文件,最后面加入下面两行 0.0.0.0 account.jetbrains.com 0.0.0.0 www.jetb ...

  7. Linux 网络通信 API详解【转载】

    TCP/IP分层模型 OSI协议参考模型,它是基于国际标准化组织(ISO)的建议发展起来的, 它分为7个层次:应用层.表示层.会话层.传输层.网络层.数据链路层及物理层. 这个7层的协议模型虽然规定得 ...

  8. 混合 App 打开 H5 调试开关

    背景 随着现在移动端设备的硬件性能的提高,现在web页面的体验逐渐变得可以接受,现在很多的应用都采用的Hybrid开发模式,一方面有利用了原生设备的API的优势(性能好.用户体验好),另一方面利用了w ...

  9. CDN的智能调度,链路优化的详细解答

    您的用户在请求资源的过程中,可能受到网络.地域.带宽等影响,无法保证请求一定是按照最优访问路径进行传递,猫云 CDN 通过对全网链路进行实时监控,结合自研的 GSLB 调度体系和智能路由技术,从以下几 ...

  10. vue项目使用Ueditor富文本编辑器总结

    我使用的是前端大佬封装的vue-ueditor-wrap插件,结合ueditor本身的压缩包开发的. 1.下载vue-ueditor-wrap: npm install vue-ueditor-wra ...