Flask数据库迁移简单介绍

 更新时间:2017年10月24日 09:35:49   作者:岚漾忆雨  
这篇文章主要为大家详细介绍了Flask数据库迁移简单工作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前言

用过Django的小伙伴都知道,Django的ORM是自带的,比较特殊,而且集成了很多功能,比如数据库迁移…
何为ORM,个人之见解,简化sql语句的书写,将关系型数据库的一张张表转化为了python的类,最大的好处是简化了学习成本,不会sql语句的程序员也能平滑的使用数据库,并且天生防sql注入。flask可以使用SQLAlchemy,包名为flask-sqlalchemy.至于具体用法翻译的官方文档讲的也足够清楚。大家直接谷歌跟着文档就能搞定,本篇主要讲如何进行数据库迁移。

flask的小工具

大家从Django转至Flask最明显的一个差异就是,flask直接运行就可以启动服务,Django是使用了runserver来进行运行。至于好坏大家自行斟酌。这里提一个插件。flask-script。pip安装即可。

from flask_script import Manager
......
manager = Manager(app)
......
#app.run() #注释这句
manager.run()

这样,启动的方式变为 python main.py runserver

这似乎有点画蛇添足,实则不然,这和我们下面要讲的数据库迁移有很大的联系。

数据库迁移

需要用的的插件 flask-migrate
安装之

main.py

from flask import Flask
from flask_script import Manager
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate,MigrateCommand

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////opt/db.sqlite' #使用sqlite3数据库
db = SQLAlchemy(app) #ORM

migrate = Migrate(app,db)
manager = Manager(app)
manager.add_comman('db',MigrateCommand) #添加db 命令(runserver的用法)

#一个用户表
class User(db.Model):
...
...
省略

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

这样,准备工作已经就绪。
运行python main.py db init创建数据表。并且会在你项目下生成migrations/目录,保存你数据库每次变更的内容。

修改User类。

python main.py db migrate 提交修改
python main.py db upgrade 执行修改

再看User表,已经改变。

python main.py db downgrade 回退修改

有一点注意的:SQLite3不能删除有值的列…所以,大家就不要删除列了…

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • numpy向空的二维数组中添加元素的方法

    numpy向空的二维数组中添加元素的方法

    今天小编就为大家分享一篇numpy向空的二维数组中添加元素的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python nohup 实现远程运行不宕机操作

    python nohup 实现远程运行不宕机操作

    这篇文章主要介绍了python nohup 实现远程运行不宕机操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • keras load model时出现Missing Layer错误的解决方式

    keras load model时出现Missing Layer错误的解决方式

    这篇文章主要介绍了keras load model时出现Missing Layer错误的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Django 解决新建表删除后无法重新创建等问题

    Django 解决新建表删除后无法重新创建等问题

    这篇文章主要介绍了Django 解决新建表删除后无法重新创建等问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 不知道这5种下划线的含义,你就不算真的会Python!

    不知道这5种下划线的含义,你就不算真的会Python!

    Python是一种高级程序语言,其核心设计哲学是代码可读性和语法,能够让程序员用很少的代码来表达自己的想法。这篇文章主要介绍了不知道这5种下划线的含义,你就不算真的会Python!对此标题感兴趣的朋友一起阅读本文吧
    2018-10-10
  • Python DBM模块轻松使用小型数据库存储管理数据

    Python DBM模块轻松使用小型数据库存储管理数据

    这篇文章主要介绍了Python DBM模块轻松使用小型数据库存储管理数据,它可以让你轻松地存储和管理键值对数据,可以使用 dbm 模块来操作 DBM 文件,或者使用 shelve 模块来存储任意类型的 Python 对象
    2024-01-01
  • Python插件机制实现详解

    Python插件机制实现详解

    这篇文章主要介绍了Python插件机制实现详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python中flatten()参数示例详解

    python中flatten()参数示例详解

    flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组,这篇文章主要给大家介绍了关于python中flatten()参数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • python实现类似Netty功能的异步编程

    python实现类似Netty功能的异步编程

    本文将介绍如何使用Python来实现本文将介绍如何使用Python来实现类似于Netty的功能,并提供一些代码示例来帮助读者理解,能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 解决Python print 输出文本显示 gbk 编码错误问题

    解决Python print 输出文本显示 gbk 编码错误问题

    这篇文章主要介绍了解决Python print 输出文本显示 gbk 编码错误问题,本文给出了三种解决方法,需要的朋友可以参考下
    2018-07-07

最新评论