0

我正在尝试创建一个 sql (sqlite) 数据库,用户在其中上传 stl 文件,并且数据(所有点、三角形等)存储在数据库中,以便永久可用。是否可以使用只有两列(三列带有键)的数据库来执行此操作:名称(url 的标题)和数据(数组数据)?

数据数组的格式为:[[[x1,y1,z1],....],[[v1,v2,v3],...]]. 首先给出所有点,然后通过给定点的排序来定义三角形。这个数组是否可以存储在数据库中,如果可以,它将是什么数据类型(整数、字符串等)?

在更多地阅读这个问题后,酸洗似乎是一个好方法:http ://docs.python.org/2/library/pickle.html

我无法弄清楚如何实现这一点。我应该只添加泡菜(数据)吗?

编辑:经过进一步审查,似乎酸洗引入了一些使用 JSON 时不存在的安全漏洞。是否可以简单地调用jsondatastring=JSON.stringify(data)然后将其保存到数据库中?如果是这样,合适的列类型是什么?

4

1 回答 1

1

如果您的意图只是将数组存储在 DB 中并在您的 webapp 代码中使用它,那么 SQLAlchemyPickleType是一个不错的选择。酸洗和解酸将为您透明地完成:

from sqlalchemy.types import PickleType

class Foo(Base):
    __tablename__ = 'foo'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    array = Column(PickleType)

foo = Foo(name=u'bar', array=[1, 2, 3])
session.add(foo)
session.commit()

foo = session.query(Foo).filter_by(name=u'bar').one()
print foo.array
于 2013-02-04T19:23:24.250 回答