pip install django names
Crie um projeto Django e gere a migração. Usaremos somente o model User
.
Usaremos a lib names. Portanto, os dados são fictícios.
import csv
import names
# Gerando um CSV
with open('/tmp/names.csv', 'w') as f:
csv_writer = csv.writer(f)
csv_writer.writerow(('first_name', 'last_name', 'username', 'email'))
for _ in range(100):
first_name = names.get_first_name()
last_name = names.get_last_name()
username = '{}-{}'.format(first_name.lower(), last_name.lower())
email = '{}.{}@email.com'.format(first_name.lower(), last_name.lower())
csv_writer.writerow((first_name, last_name, username, email))
import csv
user_list = []
with open('/tmp/names.csv') as f:
reader = csv.DictReader(f)
for row in reader:
user_list.append(row)
from django.contrib.auth.models import User
# Não parece, mas é uma list comprehension
# O importante é que precisa declarar o objeto User.
users = [User(
first_name=user['first_name'],
last_name=user['last_name'],
username=user['username'],
email=user['email']
) for user in user_list]
# Aqui entra o bulk_create. Ele é muito rápido
User.objects.bulk_create(users)
Leia sobre como ler CSV com Pandas.
Atenção: se sua lista tiver username
duplicados vai dar erro, então sugiro que leia esse trecho de código usando Pandas:
# Removendo os itens duplicados
dffinal = df.drop_duplicates('EMAIL').reset_index()
dffinal.tail()