动态创建类成员sqlalchemy



我有一个数据元组:

('dave', 23, 'm'),
('alice', 33, 'f'),
('mary', 44, 'f')

我有一个sqlalchemy基类:

class People(Base):
__tablename__='people'

我希望能够使用上方元组中的数据为此类动态创建列/字段

最终结果是:

class People(Base):
__tablename__='people'
dave = Column(String)
alice = Column(String)
mary = Column(String)

不过,我不知道如何使用splat运算符来创建字段。。

解决方案-

edtl_schematic = {
'__tablename__': 'fedex_shipments'
}
for c in cols:
(column, db_name, db_type) = c
edtl_schematic[c[1]] = Column(db_name, eval(db_type),primary_key=True if db_name=='ship_trk_num' else False)

ExtendedShipmentDetail=type('ExtendedShipmentDetail',(Base,),edtl_schematic)
Base.metadata.create_all(engine)

cols是一个元组,包含从具有列Sheet Column | DB Name | DB Type的excel工作表加载的信息,其中DB Name是我希望excel工作表列在DB中具有的名称,DB Type是sqlalchemy类型。不管这是不是正确的方法,它都有效。。

最新更新