在我之前使用 Flask 实现简单接口时,为了方便,我每次都会将数据表删除掉,然后重新创建表和添加数据。...在 Flask 中,可以使用数据库迁移来解决这个问题,数据库迁移可以追踪数据模型类的变化,然后把变动应用到数据库中,不会删表造成数据丢失。 ?...数据库迁移时,初始化命令只需要执行一次,如果在一开始发现执行有问题,需要重新初始化,要先删除 migrations 目录才行。...添加下面的代码,然后 python flask_migrate_db.py 运行代码,在两张表里面各添加一条数据。...,如 mysql + postgresql ),生成迁移脚本和执行迁移时使用 --sql 参数可以查看数据库迁移命令对应的原生 SQL 语句。
ORM允许应用程序使用高级实体(如类,对象和方法)而不是表和SQL来管理数据库。ORM的工作就是将高级操作转换成数据库命令。...但随着应用的不断增长,很可能会新增、修改或删除数据库结构。Alembic(Flask-Migrate使用的迁移框架)将以一种不需要重新创建数据库的方式进行数据库结构的变更。...当应用这些迁移脚本到数据库时,它们将按照创建的顺序执行。 Flask-Migrate通过flask命令暴露来它的子命令。你已经看过flask run,这是一个Flask本身的子命令。...Flask-Migrate添加了flask db子命令来管理与数据库迁移相关的所有事情。...立即运行python命令来启动Python(在启动解释器之前,确保您的虚拟环境已被激活)。
Python 当然不例外,可以通过 ORM 来把底层 SQL 转换成 Python 对象,这样一来,我们甚至不需要了解 SQL,只通过 Python 代码就可以完成数据库操作。...,并且有两个数据表 如果我们要删除当前的数据库,可以使用 db.drop_all() 在视图函数中操作数据库 下面我们就开始在视图函数中进行数据库的操作,这才是最为重要的。...数据库迁移 在开发程序的过程中,我们会发现有时需要修改数据库模型,而且修改之后还需要更新数据库。 仅当数据库表不存在时,Flask-SQLAlchemy 才会根据模型进行创建。...因此,更新表的唯一方式就是先删除旧表,不过这样做会丢失数据库中的所有数据。...= Migrate(app, db) 使用 init 来创建迁移仓库 flask db init Flask-Migrate 提供了一个命令集,使用 db 作为命名集名称,它提供的命令都以 flask
在多数据库应用程序可以为每个数据库单独设置一个 Alembic 脚本目录。 README 文件:说明文件,初始化完成时没有什么意义。...env.py 文件:一个 python 文件,在调用 Alembic 命令时该脚本文件运行。 script.py.mako 文件:是一个 mako 模板文件,用于生成新的迁移脚本文件。...如果对整改工程的数据表进行修改后,再次运行 revision 子命令可以看到新生成的脚本文件中的内容增加了我们对数据表的改变内容。...其内置了 Click 命令行程序,在 Flask 上可直接使用命令行工具进行数据库的迁移。关于 Click 的使用请参考 Python 命令行神器 Click。...Flask-Migrate 支持使用 pip 进行安装: pip install flask-migrate Flask-Migrate 安装完成后,会在 Flask 应用程序的命令下自动生成一个 db
在项目版本让运维部署时,涉及到数据库表的增加问题,想了一下,可以有四种方法 1.使用SQLAlchemy的db.create_all()方法 # -*- coding:utf-8 -*- from flask...already exists python migrate_create_table.py db init secound:通过migrate命令创建自动迁移脚本,此时会在数据库增加一张表(alembic_version...),记录migrate更新的版本号 python migrate_create_table.py db migrate third:通过 upgrade命令更新到数据库中 python migrate_create_table.py...db upgrade 这时候打开数据库,便可看到新增的表,以及alembic_version表中新增的版本号 注意点:1.在以后数据库迁移更新中,不再需要初始化,所以跳过init命令 ...4.直接使用sql语句 类似于第二种,区别在于运维部署多了一个步骤 此四种方法,推荐使用第二种进行新增表,第三种更利于数据库结构的回滚(使用 downgrade命令)。
数据库,需要安装 mysqldb 驱动 pip install flask-mysqldb 安装flask-mysqldb时,注意 安装 flask-mysqldb的时候,python底层依赖于一个底层的模块...: dpkg 被中断,您必须手工运行 ‘sudo dpkg --configure -a’ 解决此问题。...中无法自行决定时,指定多对多关系中的二级连表条件 数据库基本操作 在Flask-SQLAlchemy中,插入、修改、删除操作,均由数据库会话管理。...为了导出数据库迁移命令,Flask-Migrate提供了一个MigrateCommand类,可以附加到flask-script的manager对象上。...python main.py db init 创建迁移版本 自动创建迁移版本有两个函数 upgrade():函数把迁移中的改动应用到数据库中。 downgrade():函数则将改动删除。
SQLALchemy 对数据库进行了抽象,通过 Python 对象来操作数据库,开发者不用直接和 SQL 语句打交道。...当提示下图的结果时,安装成功。 ? 三、Flask-SQLALchemy 连接数据库 1. 先创建一个数据库 这里使用我之前创建的 admin 用户连接数据库。...app.config['SQLALCHEMY_ECHO'] = True 除了这两个常用的配置,还可以根据需要设置其他的数据库连接设置,可以自己查询一下,这里就不扩展了。 4....执行数据表创建 定义完成数据模型类后,执行 db 对象的 create_all() 方法,运行 Flask 后端程序后,就会在连接的数据库中创建一张表。...创建完成后,在 flask_alchemy.py 中编写代码。
ORM 提供一个附加的配置层,允许用户自定义的 Python 类进行对象关系映射,通过 session 会话与数据库进行交互。 (2)....安装依赖 使用 pip 安装以下依赖模块 python -m pip install flask==1.1.2 python -m pip install flask_migrate==2.7.0 python...from flask_migrate import Migrate from flask_script import Manager,Server #实例化一个Flask 对象 app = Flask...(app,db) #创建数据库映射命令 manager.add_command('db',MigrateCommand) #创建启动命令 manager.add_command('start',Server...:%s"% self.name if __name__ == '__main__': # db.drop_all() # db 对象调用 SQLAlchemy.drop_all() 方法来删除表
缺点: - 相比较直接使用SQL语句操作数据库,有性能损失. - 根据对象的操作转换成SQL语句,根据查询的结果转化成对象, 在映射过程中有性能损失. 2,Flask-SQLAlchemy flask...并且集成到Flask-Script中,所有操作通过命令就能完成 为了导出数据库迁移命令,Flask-Migrate提供了一个MigrateCommand类,可以附加到flask-script的manager...python manage.py db init 4.2创建迁移脚本 自动创建迁移脚本有两个函数 upgrade():函数把迁移中的改动应用到数据库中 downgrade():函数则将改动删除 自动创建的迁移脚本会根据模型定义和数据库当前状态的差异...数据库的数据迁移版本初始化 python manage.py db migrate -m 'initial migration' 3....降级版本[删除表] python manage.py db downgrade 二、flask-session 允许设置session到指定存储的空间中。
邮箱扩展 数据库migrate扩展的使用简介 在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库。最直接的方式就是删除旧表,但这样会丢失数据。...为了导出数据库迁移命令,Flask-Migrate提供了一个MigrateCommand类,可以附加到flask-script的manager对象上。...python database.py db init ? 创建迁移脚本: 自动创建迁移脚本有两个函数,upgrade()函数把迁移中的改动应用到数据库中。downgrade()函数则将改动删除。...回退数据库时,需要指定回退版本号,由于版本号是随机字符串,为避免出错,建议先使用python database.py db history命令查看历史版本的具体版本号,然后复制具体版本号执行回退。...邮箱扩展Flask- Mail 除了上述的迁移数据库外,这里简单的给大家普及一个知识点: 在开发过程中,很多应用程序都需要通过邮件提醒用户,Flask的扩展包Flask-Mail通过包装了Python
关系型数据库的列定义了表中表示的实体的数据属性。比如:商品表里有name、price、number等。 Flask本身不限定数据库的选择,你可以选择SQL或NOSQL的任何一种。...为了导出数据库迁移命令,Flask-Migrate提供了一个MigrateCommand类,可以附加到flask-script的manager对象上。...python _migrate.py db init 创建迁移脚本 自动创建迁移脚本有两个函数,upgrade()函数把迁移中的改动应用到数据库中。downgrade()函数则将改动删除。...表示备注 更新数据库 python _migrate.py db upgrade 此时数据库里已经存在数据表了,如果需要回到之前的迁移版本,使用回退命令 回退数据库 回退数据库时,需要指定回退版本号,...python _migrate.py db downgrade 版本号 六 发送邮件 在开发过程中,很多应用程序都需要通过邮件提醒用户,Flask的扩展包Flask-Mail通过包装了Python内置的
一个解释了Docker的安装方法,另一个解释了使用Python在本地机器上安装SuperSet。 以下是两个部分需要完成的常见操作项。 使用Docker 确保以下设置到位。...,Mako,alembic,flask-migrate,future,parsedatetime, jmespath,docutils,botocore,unidecode,contextlib2,python-geohash...如果要删除所有用户,请从以下目录中删除db文件: /Users//.superset 初始化数据库: $ superset db升级 ...... INFO [ alembic。...运行时。迁移 ] 运行 升级 7f cdcde0761c - > 0 c5070e96b57,添加 用户 属性 表 信息 [ alembic。运行时。...确保端口8125未被任何其他应用程序使用或使用您自己的端口,如以下命令中所列。 $ gunicorn -b 0 .0.0.0:8125 superset:app
db.create_all() 删除表 db.drop_all() 数据库迁移 在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库。...在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能完成。...为了导出数据库迁移命令,Flask-Migrate提供了一个MigrateCommand类,可以附加到flask-script的manager对象上。...准备 安装 Flask_Migrate pip install flask_migrate 迁移命令 初始化 python database.py db init 创建迁移脚本 python...1.python 文件 db init 2.python 文件 db migrate -m”版本名(注释)” 3.python 文件 db upgrade 然后观察表结构 4.根据需求修改模型 5.python
我们也想让Flask框架支持这样的操作,就需要使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能完成。...(app) """ 相关配置 """ db = SQLAlchemy(app) # 创建数据库迁移对象 Migrate(app, db) # 向脚步管理添加数据库迁移命令 db指命令的别名 manager.add_command...提交: python flask_migrate_db.py db upgrade ok 你的数据库已经有了数据 回退: 回退数据库时,需要指定回退版本号,由于版本号是随机字符串,为避免出错,建议先使用...python flask_migrate_db.py db history命令查看历史版本的具体版本号,然后复制具体版本号执行回退。...python flask_migrate_db.py db downgrade base ?
数据库迁移 在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库。最直接的方式就是删除旧表,但这样会丢失数据。...更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把变动应用到数据库中。 在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。...为了导出数据库迁移命令,Flask-Migrate提供了一个MigrateCommand类,可以附加到flask-script的manager对象上。...python3 db_database.py db init ? 创建迁移脚本 自动创建迁移脚本有两个函数,upgrade()函数把迁移中的改动应用到数据库中。...回退数据库 回退数据库时,需要指定回退版本号,由于版本号是随机字符串,为避免出错,建议先使用python3 db_database.py db history命令查看历史版本的具体版本号,然后复制具体版本号执行回退
session.close() 由于无法提供线程共享功能,所有在开发时要注意,在每个线程中自己创建 session解决办法如下: #!...创建和删除表 # 以后执行db.create_all() # 以后执行db.drop_all() 但是这样不好,我们引入 Flask-Migrate 2.Flask-Migrate 可以通过类似...Django里的命令,进行数据迁移,创建表,删除表,更新表 安装 pip install Flask-Migrate # 5.1 导入 from flask_migrate import Migrate...实例 migrate = Migrate(app, db) #执行命令: 初次:python manage.py db init python manage.py db migrate...python manage.py db upgrade 以后执行SQL时: 方式一: result = db.session.query(models.User.id,
: 可以扩展路由 Flask-Migrate 扩展 描述:该扩展实现数据库字段模型迁移 在Flask中像Django中一样进行模型迁移,初始化使用app 和 db 进行初始化,同时也可以使用懒加载方法...) 调用: python xx.py db {command} 依托于SQLAlchemy进行数据库迁移,Flask从入门到精通之使用Flask-Migrate实现数据库迁移 在开发程序的过程中,你会发现有时需要修改数据库模型...仅当数据库表不存在时,Flask-SQLAlchemy 才会根据模型进行创建。因此,更新表的唯一方式就是先删除旧表,不过这样做会丢失数据库中的所有数据。更新表的更好方法是使用数据库迁移框架。...这个扩展对Alembic 做了轻量级包装,并集成到Flask-Script 中,所有操作都通过Flask-Script 命令完成。 python .\setup.py db -?...答: Flask-caching是Flask的一个扩展为各种后端添加缓存支持到任何Flask应用程序。
缺点: 1/由于不是直接通过sql操作数据库,所以有性能损失 优点: 1/对数据库的操作都转化成对类,属性和方法的操作. 2/不用编写各种数据库的sql语句. 3/不在关注,使用的是mysql、oracle...,等等 3/更新的过程数据一般不会丢失,做降级的时候需要谨慎操作,用工具备份 操作流程: 1/安装扩展 pip install flask_script pip install flask_migrate...2/导入三个类 from flask_script import Manager from flask_migrete import Migrate,MigrateCommand 3/通过Manager...db migrate -m '注释' 在版本文件夹中生成一个版本,名字是自动生成的一串数字和你注释的内容 将版本更新到数据库执行下面的命令 ?...升级是更新一个版本,降级是回退一个版本 其他命令: 查看最新的版本的命令 python xxx.py db show 查看当前版本 python xxx.py db current 查看所有的历史版本
# 可以通过如下方法进入: # $env:FLASK_APP="sql_test.py" # flask shell # 创建表,进入flask shell后,创建完表后,会在当前目录下生成一个数据库文件...(***.sqlite) # from sql_test import app_db # app_db.create_all() # 创建表 # app_db.drop_all() # 删除表...,当数据库模型变更时,使用app_db.create_all()不会更新当前已存在的数据库,可以通过这中暴力方式3直接删除该文件,在重新生成 # 插入行,数据,同样进入flask shell模式进行操作...当我们修改数据库模型后还要自己更新数据库,每次都得删除旧的数据库表重新生成,这样得操作是不可逆得,所以我们是数据库迁移得办法类似与git的版本控制,可以监控数据库做出了那些变化,然后以增量的形式进行更新...migrate = Migrate(app,db) # 初始化命令:该命令会在当前目录下创建migrations目录,所以的迁移脚本都会存放在这里 flask db init # 自动创建迁移脚本,有时候自动创建迁移脚本是不一定能准确生成的
- manage.py 用来控制程序的 python manage.py runserver #启动服务命令 python manage.py shell #进入shell脚本模式命令 -...app/__init__ 初始化文件 初始化整个Flask对象,以及Flask所用的各种插件,并返回一个app应用 - app/settings 项目配置文件 配置整个项目运行环境 - app...db.create_all() 创建数据库 db.drop_all() 删除数据库 - doc 框架说明文档 - static 用于存放静态资源的目录 - templates 用于存放模板资源的目录...- migrations 迁移目录 ---- 数据迁移 - 将模型映射到数据库 - 使用flask-migrate库 - 安装与使用 pip install flask-migrate...初始化,需要使用app和db进行初始化,migrate=Migrate(app,db) 配置flask-script 的命令 manager.add_command('db',MigrateCommand
领取专属 10元无门槛券
手把手带您无忧上云