【问题标题】:syntax to UPDATE a BLOB field in an existing SQLite record?更新现有 SQLite 记录中的 BLOB 字段的语法?
【发布时间】:2018-12-15 11:42:22
【问题描述】:

使用 Python 对现有 SQLite 记录中的 UPDATE BLOB 字段的语法是什么?我创建了一个 13x13 的浮点数组,并希望使用该数组更新我的表中的特定记录(即使用 WHERE 子句)。

正确的UPDATE 语法是什么?

数组的形式如下:

[ 4.65640926e+00  5.59250259e+00  5.28963852e+00  1.60680866e+00
  -3.39492680e-01 -4.76834650e-01 -4.76834650e-01 -2.29132240e-01
   1.49733067e+00  1.51563072e+00  1.49733067e+00  9.53471420e-01
  -1.40306473e+00]

 [ 5.28963852e+00  5.34537315e+00  5.05013466e+00  1.48362923e+00
  -3.69843300e-01 -4.76834650e-01 -4.76834650e-01 -2.29132240e-01
   7.60705290e-01  1.49733067e+00  9.53471420e-01  3.05504260e-01
  -1.40306473e+00]

总共 13 行 13 个子数组。

谢谢你, 比尔

【问题讨论】:

  • 更新的方式与插入的方式完全相同。显示该代码。

标签: python sqlite sql-update blob


【解决方案1】:

SQL 的语法是:-

UPDATE mytable SET myblobcolumn = x'ffeedd' WHERE your_where_clause;

在哪里

  • mytable 是表名,
  • myblobcolumn 是要更新的列的名称,
  • your_where_clause 是选择标准,
  • x'ffeedd' 是字节数组值,转换为十六进制,用于更新列。

显然以上只是表示,您必须替换适当的值

【讨论】:

    【解决方案2】:

    一位朋友向我指出了这个解决方案,效果很好。最初的答案来自 StackOverflow,以给予适当的信任。

    def 适应数组(arr): """ 重新格式化 numpy 数组以便可写入 SQLite BLOB 字段 输入:Numpy 数组 返回:格式化的二进制 BLOB 兼容 代码来源:Python insert numpy array into sqlite3 database """ out = io.BytesIO() np.save(出,arr) out.seek(0) 返回 sqlite3.Binary(out.read())

    def 转换数组(文本): """ 将 SQLite BLOB 字段重新格式化为原始 Numpy 数组 输入:来自 SQLite 的 Numpy BLOB 返回:numpy 数组 代码来源:Python insert numpy array into sqlite3 database """ out = io.BytesIO(文本) out.seek(0) 返回 np.load(out)

    【讨论】:

      猜你喜欢
      • 2021-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2016-08-15
      • 1970-01-01
      • 2017-10-23
      相关资源
      最近更新 更多