Flask数据库迁移简单介绍

yipeiwu_com6年前Python基础

前言

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

对python制作自己的数据集实例讲解

对python制作自己的数据集实例讲解

一、数据集介绍 点击打开链接17_Category_Flower 是一个不同种类鲜花的图像数据,包含 17 不同种类的鲜花,每类 80 张该类鲜花的图片,鲜花种类是英国地区常见鲜花。下载...

django数据关系一对多、多对多模型、自关联的建立

一对多模型 一对多的关系,例如员工跟部门。一个部门有多个员工。那么在django怎么建立这种表关系呢? 其实就是利用外键,在多的一方,字段指定外键即可。例如员工和部门,员工是多,所以在...

Python科学计算之NumPy入门教程

前言 NumPy是Python用于处理大型矩阵的一个速度极快的数学库。它允许你在Python中做向量和矩阵的运算,而且很多底层的函数都是用C写的,你将获得在普通Python中无法达到的...

Python安装与基本数据类型教程详解

Python安装与基本数据类型教程详解

人生苦短,我选Python。 Python比其他的语言来说真的简洁多了,很多时候想做的东西都有对应的模块可以导入,平时玩点小东西真心不错。 首先讲一下安装,其实没什么好讲的,点点点点点,...

Python实现屏幕截图的代码及函数详解

废话不多说,先给大家看下python实现屏幕截图的代码,具体代码如下所述: from selenium import webdriver import time def captur...