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


猜你喜欢
- Python判断变量是否已经定义是一个非常重要的功能,本文就来简述这一功能的实现方法。其实Python中有很多方法可以实现判断一个变量是否已
- 对于时间的选择问题,查到的大部分为两种情况:1.存在readonly属性的2.没有readonly属性的可直接赋值send_keys()测试
- 一 Insert 语句1.在数据中只插入默认值:insert into [DBTrain].[dbo].[log_info]default
- 分页,就是按照某种规则显示分组数据集,但是在SQL Server 中,分页并不是十分容易就能够实现。在过去,开发人员通常需要自己编写程序,使
- 前言人类频繁的用手操作鼠标和键盘,为了解决这个问题,selenium工具为我们提供了一个类来处理这些事件— Action
- 今天要实现的功能就是以下这个功能:vue.js模拟日历插件好了废话不多说了 直接上代码了css:*{ margi
- 在使用Matlab肯定会碰到Matlab求解数组中的最大值以及它所在的位置的问题。博主开始用循环的方法找,既浪费时间又消耗资源,后面查找后才
- 前言我们平时的工作中可能需要和服务端建立链接,从而来接受服务端推送的数据,常用的就是eventSource,我们平时常用的就是通过get的方
- Pandas的apply函数概念(图解)实例1:怎样对数值按分组的归一化实例2:怎样取每个分组的TOPN数据来源:https://blog.
- “ 这是MySQL系列笔记的第十三篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,或者
- 这篇文章主要介绍了Python timer定时器两种常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 利用oracle的dbms_random包结合rownum来实现,示例如下,随机取499户:select * from ( select *
- python批量命名照片的具体代码,供大家参考,具体内容如下废话不多说,上效果图全部代码from tkinter import *impor
- 检测是否注册成功<% Set Jpeg =Server.CreateObject("Persi
- 当使用pytorch写网络结构的时候,本人发现在卷积层与第一个全连接层的全连接层的input_features不知道该写多少?一开始本人的做
- 阅读是在网站中的一个很重要的部分,可以说是网站的核心。网站最终要呈现给用户的就是内容。尤其是文本内容。豆瓣豆瓣前段时间小改了一下,页面拉宽,
- 现在浏览器种类也越来越多,诸如 IE、Firefox、Chrome、Safari等等,因此现在要实现一个js复制内容到剪贴板的小功能就不是一
- 题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它
- 前言在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下。博
- channel单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。虽然可以使用共享内存进行数据交换,但是共