我正在用Python编写一个数据库迁移脚本,其中我创建了一个字典,可以在不同版本之间迁移数据库。我目前的做法如下:
def from1To2():
pass # migration script here
def from2To1():
pass # migration script here
# etc
migrations = {
1: {'up': from1To2},
2: {'down': from2To1, 'up': from2To3},
3: {'down': from3To2, 'up': from3To4},
4: {'down': from4To3},
}
但是每次创建新的迁移时,我都需要编写两个迁移脚本(上下)并将它们放入迁移字典中。因为迁移函数非常小(通常是两行),所以我想直接在migrations dict中编写它们
migrations = {
1: {
'up': function(){ addSomeColumn(); recordChange(); },
'down': function(){ dropSomeColumn(); recordChange(); }
},
2: etc
}
因为迁移函数通常是两行的,所以我不认为我可以使用lambda函数。有人知道用Python直接在dict中编写函数的其他方法吗?欢迎所有提示!你知道吗
为此,需要使用lambda:
编写自定义装饰器:
其输出类似于:
装饰负责更新
migrations
字典,但是这样函数可以有任何名称或重复使用相同的名称,也可以在其他模块中(例如,有一个文件用于版本1到2和回滚,另一个文件用于版本2到3和回滚)。你知道吗如果函数返回
True
,则可以使用lambda: addSomeColumn() and recordChange()
。你知道吗相关问题 更多 >
编程相关推荐