我有一个包含大量列的表,需要从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__
函数。任何帮助解决这个问题将非常感激。
答案 0 :(得分:2)
您希望将字典应用为关键字参数:
table_row = Table(**table_entries)
或更改您的Table()
课程以获得一个参数:
class Table
def __init__(self, row):
self.__dict__.update(row)