将列表插入单个sqlite数据库列

时间:2014-11-12 04:43:50

标签: python python-2.7 sqlite

我有一个需要插入单个数据库列的数据列表。我在尝试这样做时遇到了这个错误:

sqlite3.InterfaceError: Error binding parameter 4 - probably unsupported type.

该参数是如下列表:

  

['\r\n', ' \n', 'Please let me know if you still need Curve Shift.\n', '\n', 'Thanks,\n', 'Heather\n', ' -----Original Message-----\n', 'From: \tAllen, Phillip K. \n', 'Sent:\tFriday, December 07, 2001 5:14 AM\n', 'To:\tDunton, Heather\n', 'Subject:\tRE: West Position\n', '\n', 'Heather,\n', '\n', 'Did you attach the file to this email?\n', '\n', ' -----Original Message-----\n', ...

     

(列表继续)...

     

'\n', 'Let me know if you have any questions.\n', '\n', '\n', 'Heather']

我提取文本文件的一部分,如下所示:

def extract_values(f):
    lines = f.readlines()

    for line_number, line in enumerate(lines):
        if line.startswith("X-FileName:"):
            data = lines[line_number:]  # read from specified line until end of file
            break

我更喜欢将数据原始插入到表中,以便可以像文本文件一样逐行读出和枚举。我该怎么做呢?我应该使用blob类型吗?我应该如何以不同方式提取数据,以便在没有所有制表符和换行符代码的情况下“按原样”插入数据?

1 个答案:

答案 0 :(得分:3)

您可以使用pickle。它是一个Python模块,用于序列化对象并将其存储在某个地方。如果您不知道序列化,请阅读up

简而言之,您将数据对象转换为二进制文件,通过网络对其进行编组,或将其作为blob存储在数据库中。然后您可以在以后使用它。

在您的查询中,您可以将对象腌制,将其存储在pdata之类的变量中,然后将其放在所需的blob列字段中,如:

cursor.execute("YOUR SQL QUERY", sqlite3.Binary(pdata))

此外,我刚看到您的列表包含文本数据,可以将其转换为JSON,这样,您可以轻松地将指定列表的JSON转储到sqllite3列中。