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()1 つの引数を受け取るようにクラスを変更します。

class Table

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