2009-08-21 4 views
0

Мне нужно вставить кортеж python (of floats) в базу данных MySQL. В принципе, я мог рассортировать его и вставлять в виде строки, но это предоставило бы мне возможность получить его только через python. Альтернативой является сериализация кортежа в XML и сохранение XML-строки.Вставка кортежа python в базу данных MySQL

Какие решения, по вашему мнению, также возможны, с прицелом на хранение других материалов (например, списка или объекта). Восстановление его с других языков - плюс.

ответ

2

Я бы посмотрел сериализацию его на JSON, используя пакет simplejson или встроенный пакет json в python 2.6.

Он прост в использовании на python, импортируемый практически на любой другой язык, и вам не нужно делать все «какой тег я должен использовать, какие атрибуты должны иметь?» решения, которые вы можете использовать в XML.

+0

Проблема с JSON заключается в том, что он сворачивает все в строку. Если у меня есть кортеж целых чисел, я бы хотел получить его как набор целых чисел, а не как набор строк. В javascript это не имеет большого значения, так как это свободно набирается, но в python это совсем другая история. Так что нет, JSON в этом случае не вариант. –

+1

JSON не требует, чтобы все было строкой. Он использует собственные типы JavaScript: string, int, float, boolean, null. –

+0

О, это меняет вещи тогда. –

2

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

3

Сделайте еще один стол и сделайте один-ко-многим. Не пытайтесь внедрить функцию языка программирования в базу данных как есть, если ее можно избежать.

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

+0

да у вас есть точка, однако. Предположим, что я должен выразить координату xyz для точки, и у меня есть одна строка для каждой точки. у вас будет два варианта: у вас есть три разных столбца, для x y и z, или вы храните tupòle как единый объект в столбце. В этом случае все легко, потому что вы знаете, сколько элементов делает ваш кортеж (три), но в моем случае я не знаю априори. Я мог бы сделать один для многих и вставлять каждый элемент кортежа, вы правы, но я боюсь, что это просто переместит проблему (например, предположим, что у меня есть кортеж кортежей). –

+0

Это по-другому, хотя и нечетный случай. Тогда придерживайтесь рекомендации YAML. Легко читается и записывается, имеет привязки к библиотеке C на большинстве языков, относится к типам данных и поддерживает произвольные пользовательские имена классов. – Eevee

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