Как сохранить многомерный массив в хранилище данных Google App Engine - PullRequest
3 голосов
/ 05 декабря 2010
class Matrix(db.Model):
 values = db.ListProperty()

obj = Matrix()

wx = [[1,0],[0,1]]

obj.put()

как хранить матрицу wx внутри хранилища данных?

1 Ответ

5 голосов
/ 05 декабря 2010

Вы захотите сериализовать вашу матрицу.Способ сериализации данных зависит от того, собираетесь ли вы запрашивать данные на основе данных в матрице.

Если вы не собираетесь выполнять запрос, просто используйте JSON (или что-то подобное).

from django.utils import simplejson as json

class Matrix(db.Model):
 values = db.StringProperty(indexed=False)

matrix = Matrix()
# will be a string like: '[[1, 0], [0, 1]]'
matrix.values = json.dumps([[1,0],[0,1]])
matrix.put()

# To get back to the matrix:
matrix_values = json.loads(matrix.values)

Если вы собираетесь попробовать запросить матрицы, содержащие «точную строку», то вы можете сделать что-то вроде:

class Matrix(db.Model):
 values = db.ListProperty()

matrix = Matrix()
values = [[1,0],[0,1]]
# will be a list of strings like:  ['1:0', '0:1']
matrix.values = [':'.join([str(col) for col in row]) for row in values]
matrix.put()

# To get back to the matrix:
matrix_values = [[int(col) for col in row.split(':')] for row in matrix.values]
...