【问题标题】:Insert list into single sqlite database column将列表插入单个 sqlite 数据库列
【发布时间】:2014-11-12 13:49:27
【问题描述】:

我有一个需要插入单个数据库列的数据列表。尝试执行此操作时出现此错误:

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 类型吗?我应该如何以不同的方式提取数据,以便在没有所有制表符和换行符代码的情况下“按原样”插入?

【问题讨论】:

  • pickle 即序列化here
  • @AliGajani 谢谢,我很难找到与 sqlite 相关的示例,然后我会使用 blob 列类型吗?
  • 如果要存储腌制对象,则需要使用 blob,因为它是二进制数据。
  • @AliGajani 你能链接到一个例子吗?我可以找到很多将挑选的二进制数据写入文件的示例,但不能写入数据库字段。 What I have found for sqlite 根本不使用泡菜,我不确定它是否可以轻松检索和使用(泡菜似乎更好)。

标签: python python-2.7 sqlite


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 没关系。没关系。我是来帮助鲍勃的。这很重要:)
  • 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多