【问题标题】:How can I convert a python array into a JSON string so that it can be stored in the database?如何将 python 数组转换为 JSON 字符串,以便可以将其存储在数据库中?
【发布时间】:2013-02-05 02:05:31
【问题描述】:

我知道在 javascript 中有 stringify 命令,但是在 python 中是否有类似的东西用于金字塔应用程序?现在我有一个可调用的视图,它获取上传的 stl 文件并将其解析为这样的格式。 data= [[[x1,x2,x3],...],[[v1,v2,v3],...]] 如何将其转换为 JSON 字符串,以便将其存储在 SQLite 数据库中?我可以将 javascript stringify 命令插入到我的 views.py 文件中吗?有没有更简单的方法来做到这一点?

【问题讨论】:

    标签: python arrays json sqlite pyramid


    【解决方案1】:

    您可以使用json 模块来执行此操作:

     import json
     data_str = json.dumps(data)
    

    还有其他数组表示也可以存储在数据库中(请参阅pickle)。

    但是,如果您实际上是在构建数据库,您应该知道将多个数据存储在关系数据库中的单个值中被视为违反基本数据库原则(第一范式)。您应该做的是将数组分解为行(可能还有单独的表)并在每个“单元格”中存储一个值。这将允许您使用 SQL 查询和分析数据。

    如果您不尝试构建一个实际的数据库(如果该数组对您的应用程序完全不透明,并且您永远不想按数组中的值进行搜索、排序、聚合或报告),那么您不需要需要非常担心范式,但您也可能会发现不需要 SQL 数据库的开销。

    【讨论】:

    • 我存储的数组是可变长度的,所以如果我要将每个值放在不同的列中,我怎么知道要放入多少列
    • @BigBoy1337:为此,您使用一对多关系表,其中每个数组元素对应一行。这大概就是为什么答案说“成行(可能还有单独的表格)”。 (PS,很好的答案。)
    • 如果它们真的是三元组的集合,那么您将使用一个包含三列的表,并为每个三元组添加一行。如果子数组也是可变长度的,那么您可以使用多种设计策略。
    • 整个数组基本上是一个元组,其中第一项和第二项都是三元组数组
    • 该数组是否对现实世界中的任何事物进行建模?如果是这样,并且您希望访问这些部件作为存储机制的一部分,您应该在数据库中对那个(或多个)事物进行建模,并将数据结构转换为该模型进行存储。
    【解决方案2】:

    你也可以使用cjson,它比json库更快。

    import cjson
    json_str = cjson.encode(your_string)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 2016-05-28
      相关资源
      最近更新 更多