Django Заполнение базы данных SQLite3 из pandas df в скрипте Python - PullRequest
0 голосов
/ 02 июля 2018

Этот вопрос похож на: Заполнение базы данных SQLite3 из файла .txt с помощью Python , но моя цель другая, поскольку я хочу заполнить базу данных из фрейма данных pandas, а не из текстового файла.

Моя цель - взять дамп XML (дамп данных StackExchange) и заполнить мою базу данных, основываясь на некоторых данных, содержащихся в ней. Я начал с использования xml.etree.ElementTree для анализа файла, а затем вытащил данные в кадр данных pandas для легкой индексации.

Мне нужно пройтись по фрейму данных, чтобы проверить условия для вопросов, внести некоторые изменения в поля, а затем заполнить поля в моей модели вопросов на основе этого. Вот моя модель вопроса:

class Question(models.Model, HitCountMixin):
    """Model class to contain every question in the forum"""
    title = models.CharField(max_length=200, blank=False)
    description = MarkdownxField()
    pub_date = models.DateTimeField('date published', auto_now_add=True)
    tags = TaggableManager()
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    closed = models.BooleanField(default=False)
    positive_votes = models.IntegerField(default=0)
    negative_votes = models.IntegerField(default=0)
    total_points = models.IntegerField(default=0)

Я знаю, что могу запустить оболочку django следующим образом:

python manage.py shell

И что мне нужно сделать что-то, чтобы создать объекты:

from your_app.models import Question
# If you're using different field names, change this list accordingly.
# The order must also match the column order in the CSV file.
fields = [<question fields>]
data = <stuff from PD dataframe>
Question.objects.create(**dict(zip(fields, data)))

Но проблема в том, что я не знаю, как затем передать мои измененные данные из фрейма данных в приведенный выше скрипт. Я смотрел на использование subprocess.call, но мне интересно, есть ли способ сделать это напрямую без запуска оболочки. Может быть, какой-нибудь прямой вызов для заполнения БД из моего основного скрипта?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...