我有一个元组数据:
('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运算符创建字段。
答案 0 :(得分:0)
解决方案-
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 Type
是sqlalchemy类型。不管这是否是正确的方法,都可以。