小编Nic*_*las的帖子

如何动态创建SQLAlchemy列

我有一个csv文件,第一行作为字段,其余行作为数据.有了这个文件,我想创建一个表.由于字段很长并且可能会有所不同,我想动态创建它.经过多次尝试和搜索,我想我可以从工厂生成一个类,然后将属性分配给新类可以生成动态列.但它失败了.并根据错误,我尝试了一些其他方法,都失败了.请帮忙.我正在考虑这样的想法是否可行.

Reader = csv.reader(open('Book1.csv', 'rb'), delimiter=',', quotechar='|')
TableItem = Reader.next()[0:]
def Factory(*args, **kwargs):
    args=args[0]
    def init(self, *iargs, **ikwargs):
        #setattr(self,__tablename__,ikwargs[__tablename__])
        for k,v in kwargs.items():
            setattr(self, k, v)
        for i in range(len(iargs)):
            setattr(self, args[i], iargs[i])
        for k,v in ikwargs.items():
            setattr(self, k, v)

    name = kwargs.pop("name", "myFactory")
    kwargs.update(dict((k, None) for k in args))
    return type(name, (object,), {'__init__': init})

LIS=Factory(TableItem)
class newLIS(LIS,Base):
    __tablename__='testonly'
    pass
mytest=[]
for row in Reader:
    mytest.append(newLIS(row))
Run Code Online (Sandbox Code Playgroud)

错误如下:

sqlalchemy.exc.ArgumentError: Mapper Mapper|newLIS|testonly could not assemble
any primary key columns for mapped table …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy dynamic-data

15
推荐指数
1
解决办法
1万
查看次数

标签 统计

dynamic-data ×1

python ×1

sqlalchemy ×1