Как я могу массово создавать объекты Django Model с помощью xml iterparse?
Я хочу вставить тысячи строк в базу данных postgres. Я планирую сделать это, используя bulk_create()
в django. Поскольку я работаю в ssh терминале с малым количеством памяти, я хочу использовать iterparse()
в xml библиотеке python
Мой XML файл выглядит следующим образом
<playerslist>
<player>
<fideid>25121731</fideid>
<name>A C J John</name>
<country>IND</country>
<sex>M</sex>
<title></title>
<w_title></w_title>
<o_title></o_title>
<foa_title></foa_title>
<rating>1063</rating>
<games>0</games>
<k>40</k>
<birthday>1987</birthday>
<flag>i</flag>
</player>
<player>
.
.
.
</player>
.
.
.
</playerlist>
Вот мои модели
class Player(models.Model):
fide_id = models.IntegerField(primary_key=True, null=False)
name = models.CharField(max_length=50, null=False)
sex = models.CharField(max_length=2, null=False)
birthday = models.IntegerField(null=True)
class Ratings(models.Model):
fide_id = models.ForeignKey(Player, on_delete=models.CASCADE)
month = models.CharField(null=False, max_length=15)
federation = models.CharField(max_length=15, null=False)
title = models.CharField(max_length=4, default=None, null=True)
w_title = models.CharField(max_length=4, default=None, null=True)
o_title = models.CharField(max_length=4, default=None, null=True)
foa_title = models.CharField(max_length=4, default=None, null=True)
rating = models.IntegerField(null=True)
games = models.IntegerField(null=True)
k = models.IntegerField(null=True)
flag = models.CharField(max_length=3, null=True)
Я хочу вставить соответствующие поля в их таблицы. Я могу сделать это на обычном компьютере, но я не уверен, как разобрать это инкрементально. Спасибо.
Редактирование : Я думаю, что подход iterparse
потребует больше транзакций, чем bulk_create
. Я не думаю, что мы можем использовать bulk_create()
здесь.