您的位置:首页
Flask入门之触发器,事件,数据迁移
2017-05-09 23:52
155 查看
SQLAlchemy Core和SQLAlchemy ORM都具有各种各样的事件挂钩:
核心事件 - 这些在 Core Events中描述,并包括特定于连接池生命周期,SQL语句执行,事务生命周期以及模式创建和拆卸的事件挂钩。
ORM事件 - 这些在 ORM事件中描述,并且包括特定于类和属性检测,对象初始化钩子,变更钩子,会话状态,刷新和提交钩子,映射器初始化,对象/结果人口和每个事件的事件钩子 - 持久性钩。
二、事件
SQLAlchemy Core和SQLAlchemy ORM都具有各种各样的事件挂钩:
1. 核心事件 - 这些在 Core Events中描述,并包括特定于连接池生命周期,SQL语句执行,事务生命周期以及模式创建和拆卸的事件挂钩。
2. ORM事件 - 这些在 ORM事件中描述,并且包括特定于类和属性检测,对象初始化钩子,变更钩子,会话状态,刷新和提交钩子,映射器初始化,对象/结果人口和每个事件的事件钩子 - 持久性钩。
事件角色预设
#models.py 红色为新增
监听事件的注册与处理的函数
#models.py 红色为新增
当User新增记录时,调用User.on_created()
三、Flask-Migrate
当我们到新机子使用时,就要用到数据迁移
1. 安装
2. 导入库
#manager.py 红色为新增
3. 实例化
4. 数据库初始化(命令行执行)
执行完毕后,会在根目录生成一个 migrations 文件夹
5. 开始迁移工作
执行完后,会在 migrations/versions 下生成一个py文件
这个文件里,有两个方法,upgrade()和downgrade()
核心事件 - 这些在 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()
相关文章推荐
- ACE_Reactor 机制下的其他事件触发器
- Winsock的事件I/O异步模型(开发网络通信程序入门的继续)
- 在编写触发器事件时如何获得当前插入记录的字段值?(MS SQL Server)
- 触发器入门(转)
- DirectShow开发快速入门之事件通知机制
- Flex中的拖放(Drag-Drop)事件入门
- Dojo入门(3)—事件
- Visual Studio 2005入门 之 类的自定义事件[视频]
- C#委托,事件理解入门
- C#线程事件的入门
- 触发器入门
- Visual Studio 2005入门 之 Asp.Net中的事件(控件事件) [视频]
- 触发器入门
- VB.net入门(6):类~构造函数,事件
- Barracuda 事件模型入门(1) - Barracuda简介
- C#中委托,事件理解入门
- DirectShow开发快速入门之三事件通知机制
- 触发器入门
- 复合控件与事件(1)——基础入门,组合也是一种封装
- .net 入门小程序(1):简单的文本文件读写及相应鼠标事件小程序