Flask数据库迁移简单介绍

作者:岚漾忆雨 时间:2024-01-20 09:00:57 

前言

用过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不能删除有值的列…所以,大家就不要删除列了…

来源:http://blog.csdn.net/baidu_35085676/article/details/78079120

标签:Flask,数据库迁移
0
投稿

猜你喜欢

  • Python 统计字数的思路详解

    2023-01-29 00:17:44
  • Python内存管理方式和垃圾回收算法解析

    2022-09-10 17:49:11
  • python list删除元素时要注意的坑点分享

    2021-07-15 16:02:22
  • python测试开发django之使用supervisord 后台启动celery 服务(worker/beat)

    2023-10-14 05:55:53
  • mpvue+vuex搭建小程序详细教程(完整步骤)

    2024-05-02 17:09:20
  • MySQL8.0.21.0社区版安装教程(图文详解)

    2024-01-20 06:33:58
  • Laravel框架表单验证格式化输出的方法

    2022-05-25 04:49:52
  • MySQL多表查询的案例详解

    2024-01-24 13:11:26
  • javascript中caller和callee详解

    2024-04-29 13:38:05
  • Python 二分查找之bisect库的使用详解

    2023-10-03 01:24:29
  • python opencv 找出图像中的最大轮廓并填充(生成mask)

    2021-01-14 23:42:10
  • 用javascript实现自定义标签

    2024-04-17 10:20:10
  • cv2.getStructuringElement()函数及开、闭、腐蚀、膨胀原理讲解

    2023-08-24 23:07:23
  • mysql实现将字符串字段转为数字排序或比大小

    2024-01-16 19:59:16
  • ASP正则获取图片地址

    2009-09-03 13:18:00
  • python中pip的使用和修改下载源的方法

    2023-08-04 21:33:41
  • 对python函数签名的方法详解

    2021-09-22 10:14:25
  • ASP不允许同一个用户同时登陆两次

    2008-06-03 13:45:00
  • PHP实用函数分享之去除多余的0

    2023-11-15 02:07:59
  • 对python 通过ssh访问数据库的实例详解

    2024-01-16 07:32:12
  • asp之家 网络编程 m.aspxhome.com