Как сохранить данные с Python?

Используйте платформу как JQuery, чтобы сделать вещи как:

function toggleStatus() {
    if ($('#toggleElement').is(':checked')) {
        $('#idOfTheDIV :input').attr('disabled', true);
    } else {
        $('#idOfTheDIV :input').removeAttr('disabled');
    }   
}

Отключают И Включают Входные Элементы В Блоке Отделения Используя jQuery, должен помочь Вам!

С jQuery 1.6, необходимо использовать .prop вместо .attr для отключения.

14
задан prattmic 7 September 2009 в 14:58
поделиться

7 ответов

Судя по вашему описанию, кодирование JSON является безопасным и быстрым решением. В python2.6 есть модуль json, вы можете использовать его следующим образом:

import json
obj = {'key1': 'value1', 'key2': [1, 2, 3, 4], 'key3': 1322}
encoded = json.dumps(obj)
obj = json.loads(encoded)

Формат JSON читается человеком и очень похож на представление строки словаря в python. И не имеет таких проблем с безопасностью, как рассол. Если у вас нет python2.6, вы можете установить cjson или simplejson

. Вы не можете использовать JSON для сохранения объектов python, таких как Pickle. Но вы можете использовать его для сохранения: строк, словарей, списков ... В большинстве случаев этого может быть достаточно.

Чтобы объяснить, почему pickle небезопасен. Из python docs :

Большинство проблем с безопасностью окружающий рассол и cPickle модуль включает распаковку. Есть нет известных уязвимостей безопасности связанных с маринованием, потому что вы ( программист) управляют объектами, которые рассол будет взаимодействовать, и все это производит - это строка.

Однако для распаковки это никогда хорошая идея, чтобы разобрать ненадежный строка, происхождение которой сомнительно, ибо Например, строки читаются из сокета. Это потому, что распаковка может создать неожиданные предметы и даже потенциально запускать методы тех объекты, такие как их класс конструктор или деструктор ... Мораль этой истории в том, что вы следует быть очень осторожным с источник строк вашего приложения unpickles.

Есть несколько способов защитить себя, но в вашем случае гораздо проще использовать JSON.

23
ответ дан 1 December 2019 в 08:53
поделиться

Вы можете сделать что-то вроде:

для записи

  • Pickle
  • Подписать маринованный файл
  • Done

, чтобы прочитать

  • Проверить подпись маринованного файла
  • Unpickle
  • Используйте

Интересно, почему вы думаете, что файлы данных будут изменены, а ваше приложение - нет?

3
ответ дан 1 December 2019 в 08:53
поделиться

Вам следует использовать какую-то базу данных. Хранить в формате рассола - не лучшая идея (в большинстве случаев). Вы можете рассмотреть:

  • SQLite - (включен в Python 2.5+) быстро и просто, но требует знания SQL и DB-API
  • buzhug - не-SQL, файловая база данных с синтаксисом Python
  • База данных SQL - вы можете использовать интерфейс с некоторыми СУБД (например, MySQL, PostreSQL и т. Д.), Но это подходит только для больших объемов данных (тысячи записей).

Вы можете найти другие решения здесь .

1
ответ дан 1 December 2019 в 08:53
поделиться

Вам необходимо предоставить нам больше контекста, прежде чем мы сможем ответить: какой тип данных вы экономите, сколько там, как вы хотите получить к нему доступ?

Что касается солений: они не хранят код. Когда вы выбираете функцию или класс, сохраняется имя, а не сам код.

1
ответ дан 1 December 2019 в 08:53
поделиться

***** В этом ответе меня беспокоит только случайное повреждение целостности приложения. *****

Pickle "безопасен" ". Что может быть небезопасным, так это доступ к коду, который вы не писали, например, в плагинах; это не имеет отношения к соленым огурцам.

Когда вы обрабатываете объект, все его данные сохраняются, а код и реализация - нет. Это означает, что при извлечении обновленный объект может обнаружить, что внутри него есть данные «старого стиля» (если вы обновите реализацию). Это то, что вы должны знать и обрабатывать, если применимо.

Обработка строк, списков, чисел, dicts очень проста и работает отлично, по сравнению с JSON. Магия Pickle в том, что - иногда без настройки - можно мариновать даже сложные объекты Python. Но маринованы только данные;

1
ответ дан 1 December 2019 в 08:53
поделиться

Кто - конкретно - социопат, который пытается взломать программу, взломав маринованный файл?

Это Python. У социопата есть ваш источник. Им не нужно дурачиться, взламывая ваш файл рассола. Они могут просто отредактировать ваш источник и нанести любой «ущерб», какой захотят.

Не беспокойтесь о «небезопасности», если только вы не участвуете в судебных процессах с организованными преступными синдикатами.

Не беспокойтесь о «мошенниках». save файл может ввести вредоносный код в программу ". Никто не будет беспокоиться о мошеннических файлах сохранения, когда у них есть исходный код.

1
ответ дан 1 December 2019 в 08:53
поделиться

Вы можете использовать это:

addedDate = datetime.now (). http://yserial.sourceforge.net

which reads like a tutorial but operationally offers working code for serialization and persistance. The commentary discusses some of the pros and cons relevant to issues raised here.

It's designed to be a general solution to warehousing compressed Python objects with SQLite (with almost no SQL fuss ;-)

Hope this helps.

1
ответ дан 1 December 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: