前提・実現したいこと
実現したいこと:djangoでcsvデータをインポートできる機能を追加したい。
作っているもの:csvデータをインポートするとデータベースに登録されるwebアプリを作っています。
質問:データベースにテーブルは作成していますが、データは入っておらず空なのですが、下記のエラーが出てしまいます。主キーはインポートデータとして扱えないのでしょうか。
発生している問題・エラーメッセージ
(1062, "Duplicate entry '12' for key 'PRIMARY'")
該当のソースコード
import csv import io from django import forms from .models import CustomerData class CSVUploadForm(forms.Form): file = forms.FileField(label='CSVファイル') def clean_file(self): file = self.cleaned_data['file'] if not file.name.endswith('.csv'): raise forms.ValidationError('ファイルをアップロードしてください') csv_file = io.TextIOWrapper(file, encoding='utf-8-sig') reader = csv.reader(csv_file) self._instances = [] try: for row in reader: post = CustomerData(Myid=row[0], DKey=row[1]) self._instances.append(post) except UnicodeDecodeError: raise forms.ValidationError('CSVファイルを選択して下さい') return file def save(self): CustomerData.objects.bulk_create(self._instances) CustomerData.objects.bulk_update(self._instances, fields=['Myid','DKey'])
エラーコード部分
上記の該当エラーコードのsave部分のコードがエラーとなっております。
def save(self): CustomerData.objects.bulk_create(self._instances) CustomerData.objects.bulk_update(self._instances, fields=['Myid','DKey'])
インポートするテストデータは次のようなものです。
csv
112,2 213,3 314,2
データベースの構造について
MyidはCustomerDataの主キーです。
MyidとDKeyはともにintです。
あなたの回答
tips
プレビュー