Как я могу массово создавать объекты 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() здесь.

Вернуться на верх