遇到这样一个需求,使用sqlalchemy作为ORM框架,很多表表结构一致,但表名不一样,所以需要先创建多个model,每个表都去做重复的工作,对于我来说,是无法接受的,于是,使用type动态创建类,并动态绑定metaData这种方式来动态创建类:
from sqlalchemy.orm import mapper
from sqlalchemy import Table,MetaData
metadata = MetaData()
def getNewModel(name):
t = type(name,(object,),dict())
user = Table(name,metadata,
Column('id',Integer,primary_key = True),
)
mapper(t,user)
return t
t1 = getNewModel("t1"