我有一个数据元组:
('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类型。不管这是不是正确的方法,它都有效。。