在现有SQLite记录中更新BLOB字段的语法?

时间:2018-07-06 21:05:59

标签: python sqlite sql-update blob

使用Python处理现有UPDATE记录中的BLOBSQLite字段的语法是什么?我创建了一个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个子数组。

谢谢你, 比尔

2 个答案:

答案 0 :(得分:2)

SQL的语法是:-

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

哪里

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

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

enter image description here

答案 1 :(得分:0)

一个朋友向我指出了这种解决方案,效果很好。最初的答案来自StackOverflow,以示适当的感谢。

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

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