1

我有一个包含大量列的表,需要从 csv 文件中填充。__init__我在模型定义中有以下代码。[1]

class Table

    column1 = ............
    column2 = .............
    .......

    def __init__(self, **kwargs):
            self.__dict__.update(kwargs)

从 csv 文件读取的代码是 (load_csv.py)

data_file = "data.csv"
csv_file = csv.DictReader(open(data_file, 'rU'), delimiter=',')
for row in csv_file:
        table_entries = {}
        for key, value in row.items():
                table_entries[key] = value
        table_row = Table(table_entries)
        db.session.add(table_row)
        db.session.commit()

执行 load_csv.py 时出现以下错误

    table_row = Table(table_entries)
TypeError: __init__() takes exactly 1 argument (2 given)

我读到是因为它使用的是默认值__init__,但我看不到它为什么缺少__init__我在代码中定义的函数。解决此问题的任何帮助将不胜感激。

4

1 回答 1

2

您想将字典用作关键字参数:

table_row = Table(**table_entries)

或更改您的Table()课程以接收一个参数:

class Table

    def __init__(self, row):
            self.__dict__.update(row)
于 2013-06-21T21:22:53.920 回答