Sam
Sam

Reputation: 1050

How to store a multi dimensional array inside Google App Engine datastore

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

obj = Matrix()

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

obj.put()

how to store wx matrix inside datastore ?

Upvotes: 3

Views: 2137

Answers (1)

Robert Kluin
Robert Kluin

Reputation: 8292

You will want to serialize your matrix. How you should serialize the data depends on whether or not you are going to query based on data in the matrix.

If you are not going to query, just use JSON (or something similar).

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)

If you are going to try querying for matrices that contain an 'exact row', then you might want to do something like:

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]

Upvotes: 5

Related Questions