Загрузка базы данных через sql-предложение в представлении Django [дубликат]

У меня есть представление Django, которое загружает таблицу базы данных MySQL в зависимости от выбранной кнопки. Проблема в том, что когда я загружаю таблицы, слова в CSV изменяются со всеми запятыми. Поэтому я хотел бы изменить код, который у меня есть, с предложениями SQL. Но я не знаю, как потом экспортировать это SQL предложение в CSV. За помощь буду очень признателен.

Вот что у меня есть на данный момент Мой Views.py:

def download_db(request, mode):

response = HttpResponse(content_type='text/csv')
writer = csv.writer(response)

if mode == 1:
    writer.writerow(['session_id', 'word1', 'word2', 'word3', 'distance_to_word12', 'distance_to_word13', 'distance_to_word23'])

    for word in WordDifferentTable.objects.all().values_list('session_id', 'word1', 'word2', 'word3', 'distance_to_word12', 'distance_to_word13', 'distance_to_word23'):
        writer.writerow(word)
    response['Content-Disposition'] = 'attachment; filename="ForWordDifferent.csv"'
    return response

elif mode == 2:
    writer.writerow(['session_id', 'word1', 'word2', 'word3', 'distance_to_word12', 'distance_to_word13', 'distance_to_word23'])

    for word in LogicAnaloguiesTable.objects.all().values_list('session_id', 'word1', 'word2', 'word3', 'distance_to_word12', 'distance_to_word13', 'distance_to_word23'):
        writer.writerow(word)
    response['Content-Disposition'] = 'attachment; filename="ForLogicAnalogies.csv"'
    return response

elif mode == 3:
    writer.writerow(['session_id', 'word1', 'word2', 'word3', 'distance_to_word12', 'distance_to_word13', 'distance_to_word23'])

    for word in SimilarWInContextTable.objects.all().values_list('session_id', 'word1', 'word2', 'word3', 'distance_to_word12', 'distance_to_word13', 'distance_to_word23'):
        writer.writerow(word)
    response['Content-Disposition'] = 'attachment; filename="ForSimilarWordInContext.csv"'
    return response

elif mode == 0:
    writer.writerow(['session_id', 'word1', 'word2', 'word3'])

    for word in WordsTable.objects.all().values_list('session_id', 'word1', 'word2', 'word3'):
        writer.writerow(word)
    response['Content-Disposition'] = 'attachment; filename="WordsTable.csv"'
    return response

return JsonResponse({}, status=304)

Одна из моделей (остальные довольно похожи):

class LogicAnaloguiesTable(models.Model):
session_id = models.IntegerField(db_column='session_ID', blank=True, null=True)  # Field name made lowercase.
user_id = models.IntegerField(db_column='user_ID', blank=True, null=True)  # Field name made lowercase.
date = models.DateField(blank=True, null=True)
hour = models.TimeField(blank=True, null=True)
run_label = models.IntegerField(blank=True, null=True)
status = models.IntegerField(blank=True, null=True)
word1 = models.CharField(max_length=45, blank=True, null=True)
word2 = models.CharField(max_length=45, blank=True, null=True)
word3 = models.CharField(max_length=45, blank=True, null=True)
word4 = models.CharField(max_length=45, blank=True, null=True)
word5 = models.CharField(max_length=45, blank=True, null=True)
result = models.CharField(max_length=45, blank=True, null=True)
distance_to_word12 = models.FloatField(blank=True, null=True)
distance_to_word13 = models.FloatField(blank=True, null=True)
distance_to_word14 = models.FloatField(blank=True, null=True)
distance_to_word15 = models.FloatField(blank=True, null=True)
distance_to_word23 = models.FloatField(blank=True, null=True)
distance_to_word24 = models.FloatField(blank=True, null=True)
distance_to_word25 = models.FloatField(blank=True, null=True)
distance_to_word34 = models.FloatField(blank=True, null=True)
distance_to_word35 = models.FloatField(blank=True, null=True)
distance_to_word45 = models.FloatField(blank=True, null=True)
embedding = models.CharField(max_length=45, blank=True, null=True)

class Meta:
    db_table = 'logic_analoguies_table'
Вернуться на верх