2015-01-06 2 views
0

У меня есть список файлов csv, хранящихся на моем сервере, и я использую d3js для отображения их пользователям, использующим рендеринг таблицы с d3.js, и я использую django для работы на стороне сервера. Тем не менее, я хочу добавить новую функцию, то есть когда пользователь щелкнет значение в таблице, они могут их изменить, и, разумеется, изменения также используются в истинном файле (тот, который я сохранил на сервере). Моя идея заключается в том, что каждое значение имеет значение row и col id, а когда пользователь меняет значение, я использую ajax, передавая новое значение и идентификатор col-col на сервер, на стороне сервера есть функция, которая изменяет файл csv с этими тремя входами. Я хотел бы знать, есть ли какие-либо демо или другой лучший способ справиться с этой задачей. Большое спасибоd3js с django/python изменить файл csv

ответ

0

Как правило, я избегаю вашего подхода, используя чистые файлы на основе csv.

Постоянная дисковая/операция ввода-вывода является дорогостоящей для сервера (Read this FAQ может помочь вам понять больше), и может ввести условие гонки с несколькими пользователей пытаются обновить ту же таблицу, что CSV будет =>чтения/записи < ->доступа/блокировки т.д.

Лично я хотел бы предложить сочетание использования NoSQL базы данных (например, Redis, MongoDB и т.д.) в качестве движка для хранения вашего d3.js, общаться между сервером < ->клиентов с использованием WebSocket - Pub/Sub сообщение (с ajax как резерв).

Чтение/запись состояние таблицы через queue системы (Celery или просто с вашим NoSQL).

Если вы так настаивали, вы можете также иметь периодическую резервную копию хранилища, написав специальные сценарии сервера, чтобы выгрузить/экспортировать хранилище (данные таблицы) в файл csv.

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

+0

Привет, очень хорошее предложение, если я просто предоставлю задачу, о которой я говорил ранее, я последую вашему предложению. Но другой причиной является то, что я должен хранить их с помощью csv, потому что мой сайт был повторно использован несколько программ, которые могут принимать только файлы csv. И еще одна вещь, возможно, каждую неделю, только 10 или 20 таких задач будут выполнены. Итак, есть ли у вас идея использовать чистый файл csv? – cityCoder

+0

@cityCoder, если вы так настаивали на использовании csv, это все еще возможно. могу ли я спросить, какой бэкэнд вы собираетесь использовать для конечных точек api? Вместо этого вы можете написать свой собственный api с помощью простой комбинации json/django view и чтения/записи из/в ваш файл csv. – Anzel

+0

Я загружаю некоторые инструменты, которые могут дать некоторый результат на основе ввода пользователя, например, выполнять задачи математического вычисления для пользователя. Учитывая некоторые статистические результаты. Эти инструменты выводят файлы csv, поэтому я хочу напрямую обрабатывать файл csv. Спасибо за Вашу информацию. Я буду json/django делать это ~ – cityCoder

Смежные вопросы