【问题标题】:Populating a model from csv: __init__ arguments error从 csv 填充模型:__init__ 参数错误
【发布时间】:2013-06-21 21:17:43
【问题描述】:

我有一个包含大量列的表,需要从 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__ 函数。解决此问题的任何帮助将不胜感激。

【问题讨论】:

    标签: python database sqlalchemy flask


    【解决方案1】:

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

    table_row = Table(**table_entries)
    

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-03
      • 1970-01-01
      • 2013-11-12
      • 2014-07-24
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      相关资源
      最近更新 更多