从csv填充模型:__ init__ arguments错误

时间:2013-06-21 21:17:43

标签: python database sqlalchemy flask

我有一个包含大量列的表,需要从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)

我看了that这是因为它使用了默认的__init__,但我无法理解为什么它缺少我在代码中定义的__init__函数。任何帮助解决这个问题将非常感激。

1 个答案:

答案 0 :(得分:2)

您希望将字典应用为关键字参数:

table_row = Table(**table_entries)

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

class Table

    def __init__(self, row):
            self.__dict__.update(row)