Flask入门之触发器,事件,数据迁移

SQLAlchemy Core和SQLAlchemy ORM都具有各种各样的事件挂钩:

核心事件 - 这些在 Core Events中描述,并包括特定于连接池生命周期,SQL语句执行,事务生命周期以及模式创建和拆卸的事件挂钩。

ORM事件 - 这些在 ORM事件中描述,并且包括特定于类和属性检测,对象初始化钩子,变更钩子,会话状态,刷新和提交钩子,映射器初始化,对象/结果人口和每个事件的事件钩子 - 持久性钩。

二、事件

SQLAlchemy Core和SQLAlchemy ORM都具有各种各样的事件挂钩:

1. 核心事件 - 这些在 Core Events中描述,并包括特定于连接池生命周期,SQL语句执行,事务生命周期以及模式创建和拆卸的事件挂钩。

2. ORM事件 - 这些在 ORM事件中描述,并且包括特定于类和属性检测,对象初始化钩子,变更钩子,会话状态,刷新和提交钩子,映射器初始化,对象/结果人口和每个事件的事件钩子 - 持久性钩。

事件角色预设

#models.py 红色为新增

class Role(db.Model):
    __tablename__ = ‘roles‘
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=True)
    users = db.relationship(‘User‘, backref=‘role‘)

    @staticmethod
    def seed():
        db.session.add_all(map(lambda r:Role(name=r),[‘Guests‘,‘Administrators‘]))

监听事件的注册与处理的函数

#models.py 红色为新增

class User(db.Model):
    __tablename__ = ‘users‘
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=True)
    password = db.Column(db.String, nullable=True)
    role_id = db.Column(db.Integer,db.ForeignKey(‘roles.id‘))

    @staticmethod
    def on_created(target,value,initiator):
        target.role=Role.query.filter_by(name=‘Guests‘).first()

db.event.listen(User.name,‘set‘,User.on_created)

# listen事件就与on_created这个方法绑定起来

当User新增记录时,调用User.on_created()

三、Flask-Migrate

  当我们到新机子使用时,就要用到数据迁移

  1. 安装

pip install flask-migrate==1.5.0

  2. 导入库

#manager.py 红色为新增

from app import create_app,db
from flask_migrate import Migrate,MigrateCommand

  3. 实例化

migrate=Migrate(app,db)
manager.add_command(‘db‘,MigrateCommand)

  4. 数据库初始化(命令行执行)

python manager.py db init

执行完毕后,会在根目录生成一个 migrations 文件夹

  5. 开始迁移工作

python manager.py db migrate

执行完后,会在 migrations/versions 下生成一个py文件

这个文件里,有两个方法,upgrade()和downgrade()

时间: 2024-10-19 06:54:35

Flask入门之触发器,事件,数据迁移的相关文章

Entity Framework7 入门之全功能.NET版本下使用EF7(含源码)另附数据迁移常见错误处理

Entity Framework7 入门之全功能.NET(Console, WinForms, WPF等)使用EF7 昨天,我们介绍了EF的新特性和开发计划,如果你还不了解,请移步 Entity Framework7 有哪些不同?现在开发到什么程度了? .今天,我们开学习全功能.NET(Full .NET)下使用EF7.官方已经写了关于最新的 Pre-Release版本EF7.0.0-beta7的入门教程,很详细,我就没有必要自己再重复造轮子了,只因为是英文的,为了方便不少懒人(不是看不懂英文,

ASP.NET MVC4 新手入门教程特别篇之一----Code First Migrations更新数据库结构(数据迁移)修改Entity FrameWork 数据结构(不删除数据)

背景 code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的旧数据库中包含一些测试数据时,当持久化更新后,原数据将全部丢失,故我们可以引入EF的数据迁移功能来完成. 要求 已安装NuGet 过程示例 原model using System; using System.Collections.Generic; using System.Linq; using

mysql数据迁移

一. 数据迁移简介所谓的数据迁移,就是指将原有的数据库系统迁移到另外一个业务系统上数据迁移的原因是多种多样的,有可能是业务变更.硬件升级.平台切换或升级mysql数据库 迁移的注意事项:(1).相同版本可以迁移(2).注意版本可以使用的引擎(3).低版本可以向高版本进行数据迁移,高版本一般兼容低版本的特性(4).高版本的数据不能向低版本进行数据迁移,会出现数据不兼容的情况(5).迁移是请注意导出数据和备份数据,出现迁移失败时,立即启动备份方案,保证公司业务的正常运行(6).在数据迁移时,要选择用

oracle 数据库数据迁移解决方案

大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,接下来把心得与大家分享一下 去年年底做了不少系统的数据迁移,大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,有一些心得体会,与大家分享. 首先说说迁移流程,在迁移之前,写好方案,特别是实施的方案步骤一定要写清楚,然后进行完整的测试.我们在迁移时,有的系统测试了四五次,通过测试来完善方案和流程. 针对物理迁移,也即通过RMAN备份来进行还原并应用归档的方式(这里不讨论通过dd方式进行的冷迁移),虽然注意的是

关于数据迁移的方法、步骤和心得

在项目中经常会遇到系统完全更换后的历史数据迁移问题,以示对客户历史工作的尊重,何况很多数据仍有保留的必要. 那怎么做历史数据迁移呢? 系统分析: 1.分析原有的业务系统 精确到大致的系统功能模块.大致的处理流程即可 2.分析现有的业务系统 精确到大致的系统功能模块.大致的处理流程即可 3.分析两者自己的区别和差异 大致分析一下两个业务系统之间的区别,有助于确定工作量和工作进度 4.分析用户对旧有数据的需求 分析对旧有数据的需求,才不至于盲目的全部性的进行迁移 5.分析用户对旧有数据的处理规则 旧

[转载] 使用Kettle进行数据迁移(ETL)

由于开发新的系统,需要将之前一个老的C/S应用的数据按照新的数据设计导入到新库中.此过程可能涉及到表结构不一致.大数据量(千万级,甚至上亿)等情况,包括异构数据的抽取.清洗等等工作.部分复杂的工作需要我们的DBA写代码用程序在JDBC或者Delphi中解决,而大部分稍简单的数据的迁移需要一个强大的ETL工具来解决.某日,技术经理让我找一个满足我们项目数据迁移需求的稳定.高效ETL工具.google了几把,网上大致有下列几款软件资料较多:Oracle的OWB(Oracle Warehouse Bu

Flask入门(一)

Flask入门(一) 1 安装虚拟环境Mac,linux sudo pip install virtualenv ? ubuntu系统 sudo apt-get install python-virtualenv 2 安装flask 1 python3 环境下全局安装 pip3 install flask 2 虚拟环境下virtualenv下安装 首先先创建env虚拟环境 mkdir myproject #新建项目目录 cd myproject virtualenv venv #安装虚拟文件目录

完美数据迁移-MongoDB Stream的应用

一.背景介绍 最近微服务架构火的不行,但本质上也只是风口上的一个热点词汇. 作为笔者的经验来说,想要应用一个新的架构需要带来的变革成本是非常高的. 尽管如此,目前还是有许多企业踏上了服务化改造的道路,这其中则免不了"旧改"的各种繁杂事. 所谓的"旧改",就是把现有的系统架构来一次重构,拆分成多个细粒度的服务后,然后找时间 升级割接一把,让新系统上线.这其中,数据的迁移往往会成为一个非常重要且繁杂的活儿. 拆分服务时数据迁移的挑战在哪? 首先是难度大,做一个迁移方案需

【赵强老师】利用数据库触发器实现数据的同步

一.什么是触发器 数据库触发器是一个与表相关联的,存储的PL/SQL 语句.每当一个特定的数据操作语句(insert update delete)在指定的表上发出时,Oracle自动执行触发器中定义的语句序列. 触发器的应用场景如下: 复杂的安全性检查 数据的确认 数据库审计 数据的备份和审计 二.创建Oracle触发器的语法 CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER } {INSERT | DELETE | UPDATE