【问题标题】:Save a python list in SQLite在 SQLite 中保存 python 列表
【发布时间】:2014-08-05 22:58:49
【问题描述】:

我正在尝试保存像 ex 这样的列表。
mylist = [ 196, 107, 207, 180, etc.] 在 SQLite 的表中。该列表只是整数,我想保持列表不变。我可以这样做吗? 我尝试执行 ''' insert into table(field) value(?)''' ,(mylist)。但总是收到错误消息。

【问题讨论】:

  • 哪个错误信息?显示代码!显示表定义!

标签: python list sqlite


【解决方案1】:

您不能在表格的列中存储项目列表(在您的情况下为整数)。您可以使用不同的数据库,例如 MongoDB,其中可以存储“文档”

{'my_list': [196, 107, 207, 180 等]}

或提出一个不同的架构,其中您有类似以下列(ID、list_id、list_member)的内容。然后,您的列表中的每个成员都会有一个新行。假设你会有其他列表?您使用同一张表并具有不同的 list_id。 要获取列表中的项目:
SELECT list_member FROM 'table_name' WHERE list_id is 1

ID     list_id        list_member
 1       1                  196
 2       1                  107
 3       1                  207
 4       1                  180
 5       1                  etc
 6       2                  123
 7       2                  etc

这里也有更详细的答案How to store a list in a column of a database table

【讨论】:

    【解决方案2】:

    在保存时将列表转换为字符串,使用str()。 然后使用eval()将其转换回加载列表

    自己试试看:

    x = [1, 2]
    print(type(x))
    y = str(x)
    print(type(y))
    z = eval(y)
    print(type(z))
    print(x)
    print(y)
    print(z)
    

    【讨论】:

      【解决方案3】:

      另一种方法是使用内置 json 模块将列表转换为 json 字符串。

      to_dump = [1,2,3,4]
      sql_as_text = json.dumps(to_dump)
      

      (将“sql_as_text”变量作为文本写入数据库)

      当你想重用你的数据时,只需反过来

      to_dump = json.loads(sql_as_text)
      

      此方法也适用于python字典。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-10
        • 2017-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多