我正在尝试创建一个sql(sqlite)数据库,用户上传一个stl文件,数据(所有点,三角形等)都存储在数据库中,以便永久可用。是否可以使用只有两列的数据库(三个带键):name(url的标题)和data(数组数据)?
数据数组的格式为:[[[[x1,y1,z1],......],[[v1,v2,v3],...]]。首先给出所有点,然后通过给定点的排序来定义三角形。这个数组可以存储在数据库中,如果存在,它将是什么数据类型(整数,字符串等)?
在阅读这个问题后,似乎酸洗是一个很好的方法:http://docs.python.org/2/library/pickle.html
我无法弄清楚如何实现这一点。我应该添加泡菜(数据)吗?
编辑:经过进一步审核,似乎酸洗引入了一些在使用JSON时不存在的安全漏洞。是否可以简单地调用jsondatastring=JSON.stringify(data)
然后将其保存到数据库中?如果是这样,那么适当的列类型是什么?
答案 0 :(得分:1)
如果您的目的只是将数组存储在数据库中并在Web应用程序代码中使用它,那么SQLAlchemy的PickleType
是一个不错的选择。酸洗和去皮将为您透明地完成:
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