TransWikia.com

Как записать список в файл в правильном порядке?

Stack Overflow на русском Asked by Radzhab on November 5, 2021

С помощью pymysql делаю запрос к базе данных

sql = "SELECT {0} from {1}".format(data,table);
cursor.execute(sql)
items =  cursor.fetchall()

введите сюда описание изображения

В items вот такие данные. Как пройтись по ним понятно, а как записать в csv – нет.

with open(filename, 'w', newline='n',encoding='utf8', errors='replace') as myfile:
        wr = csv.writer(myfile, delimiter=';' )
        for key in items:
            lst = []
            for key, value in key.items():
                lst.append(value)
#lst ['000001', 'Игровой диск PEGI 16+', '000001-000021-000025', Decimal('200.00'), Decimal('500.00'), 0]
            wr.writerow(lst)

Writerow у меня локально заносит как есть, а на сервере порядок абсолютно другой. Запросы идентичные, входные данные тоже. Не пойму в чем проблема

One Answer

sql = "SELECT {0} from {1}".format(data,table);

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

sql = "SELECT {0} from {1} order by art".format(data,table);

Но ещё лучше, наверное, считывать данные с помощью библиотеки Pandas (функция read_sql), потом вы сможете легко отсортировать данные, отфильтровать, добавить нужные поля и легко записать в файл в нужном вам порядке.

Answered by CrazyElf on November 5, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP