【问题标题】:Python mysql code to insert dictionary containing an ArrayPython mysql代码插入包含数组的字典
【发布时间】:2021-07-19 03:11:26
【问题描述】:

我有一本这样的字典;

{'name': '0004', 'encodings': array([-2.05818519e-01,  1.50254071e-01,  6.18976653e-02, -4.57169749e-02,
       -1.07391022e-01,  5.82340732e-02,  1.71395876e-02, -6.04623035e-02,
        1.16265789e-01, -1.24150608e-02,  2.55038321e-01,  2.44104303e-03,
       -2.83989906e-01, -7.16208220e-02, -1.18346401e-01,  6.68070763e-02,
       -1.55324042e-01, -1.11675814e-01, -1.44206494e-01, -2.48661116e-02,
        4.79197986e-02, -3.35404947e-02, -2.06724089e-02,  5.70063107e-02,
       -1.29669383e-01, -2.63163120e-01, -2.25746073e-04, -1.47813573e-01,
        6.61746860e-02, -2.05630586e-01, -2.89494134e-02, -8.06591734e-02,
       -1.74903452e-01, -1.17690712e-01, -8.54253620e-02,  1.46108493e-03,
       -7.83449411e-03, -7.44407028e-02,  2.03817844e-01, -4.55042198e-02,
       -1.86186373e-01, -1.54956458e-02,  4.17447761e-02,  3.07781637e-01,
        1.80454239e-01,  1.86630823e-02,  5.65212369e-02, -9.69169587e-02,
        1.39696896e-01, -2.83250719e-01, -3.60675156e-04,  1.29852593e-01,
        1.69919491e-01,  2.47877426e-02,  2.96924170e-02, -1.77335575e-01,
       -2.26391852e-03,  1.38161883e-01, -1.87802404e-01,  1.11906916e-01,
        4.17628363e-02, -6.03848845e-02,  4.18845750e-03, -5.18675111e-02,
        2.16162637e-01,  4.84820902e-02, -1.24477677e-01, -8.92214701e-02,
        1.42987236e-01, -1.07746974e-01,  1.67147964e-02,  1.29372582e-01,
       -6.53869957e-02, -2.22480565e-01, -2.30741382e-01,  8.90350789e-02,
        4.72032219e-01,  1.94205374e-01, -1.43704772e-01,  1.38391014e-02,
       -2.22896904e-01, -4.31186557e-02,  2.22993959e-02,  5.01501486e-02,
       -1.09650522e-01,  2.00281274e-02, -1.12852253e-01,  8.36469531e-02,
        1.81203574e-01, -6.09542057e-03,  2.61690491e-03,  1.59612983e-01,
        5.85054457e-02, -5.77166155e-02,  2.08678767e-02,  7.78703764e-02,
       -1.74884677e-01,  4.89859655e-02, -4.20536213e-02,  2.84303911e-02,
        5.88016734e-02, -9.87139642e-02,  1.04927823e-01,  4.22693267e-02,
       -1.54544935e-01,  1.09288253e-01, -6.07409002e-03, -2.16740593e-02,
        1.54772867e-03, -7.67392293e-02, -2.64447108e-02,  4.24488354e-03,
        1.71442956e-01, -2.87759811e-01,  1.82956830e-01,  1.60583854e-01,
        3.09638251e-02,  1.53580874e-01,  9.96040404e-02,  3.40097286e-02,
        2.06465945e-02,  7.02249445e-03, -9.22998041e-02, -6.18107505e-02,
        7.82211274e-02, -8.35414380e-02,  1.60512835e-01, -1.17839221e-02])}

而我是用这个SQL命令插入的;

INSERT INTO image ( `name`, `encodings` ) VALUES ( '0004', '[-2.05818519e-01  1.50254071e-01  6.18976653e-02 -4.57169749e-02
 -1.07391022e-01  5.82340732e-02  1.71395876e-02 -6.04623035e-02
  1.16265789e-01 -1.24150608e-02  2.55038321e-01  2.44104303e-03
 -2.83989906e-01 -7.16208220e-02 -1.18346401e-01  6.68070763e-02
 -1.55324042e-01 -1.11675814e-01 -1.44206494e-01 -2.48661116e-02
  4.79197986e-02 -3.35404947e-02 -2.06724089e-02  5.70063107e-02
 -1.29669383e-01 -2.63163120e-01 -2.25746073e-04 -1.47813573e-01
  6.61746860e-02 -2.05630586e-01 -2.89494134e-02 -8.06591734e-02
 -1.74903452e-01 -1.17690712e-01 -8.54253620e-02  1.46108493e-03
 -7.83449411e-03 -7.44407028e-02  2.03817844e-01 -4.55042198e-02
 -1.86186373e-01 -1.54956458e-02  4.17447761e-02  3.07781637e-01
  1.80454239e-01  1.86630823e-02  5.65212369e-02 -9.69169587e-02
  1.39696896e-01 -2.83250719e-01 -3.60675156e-04  1.29852593e-01
  1.69919491e-01  2.47877426e-02  2.96924170e-02 -1.77335575e-01
 -2.26391852e-03  1.38161883e-01 -1.87802404e-01  1.11906916e-01
  4.17628363e-02 -6.03848845e-02  4.18845750e-03 -5.18675111e-02
  2.16162637e-01  4.84820902e-02 -1.24477677e-01 -8.92214701e-02
  1.42987236e-01 -1.07746974e-01  1.67147964e-02  1.29372582e-01
 -6.53869957e-02 -2.22480565e-01 -2.30741382e-01  8.90350789e-02
  4.72032219e-01  1.94205374e-01 -1.43704772e-01  1.38391014e-02
 -2.22896904e-01 -4.31186557e-02  2.22993959e-02  5.01501486e-02
 -1.09650522e-01  2.00281274e-02 -1.12852253e-01  8.36469531e-02
  1.81203574e-01 -6.09542057e-03  2.61690491e-03  1.59612983e-01
  5.85054457e-02 -5.77166155e-02  2.08678767e-02  7.78703764e-02
 -1.74884677e-01  4.89859655e-02 -4.20536213e-02  2.84303911e-02
  5.88016734e-02 -9.87139642e-02  1.04927823e-01  4.22693267e-02
 -1.54544935e-01  1.09288253e-01 -6.07409002e-03 -2.16740593e-02
  1.54772867e-03 -7.67392293e-02 -2.64447108e-02  4.24488354e-03
  1.71442956e-01 -2.87759811e-01  1.82956830e-01  1.60583854e-01
  3.09638251e-02  1.53580874e-01  9.96040404e-02  3.40097286e-02
  2.06465945e-02  7.02249445e-03 -9.22998041e-02 -6.18107505e-02
  7.82211274e-02 -8.35414380e-02  1.60512835e-01 -1.17839221e-02]' );

但编码部分不再是数组,而是文本。因此人脸识别应用无法检查。

如何从 MySQL 数据库中插入和检索图像以控制人脸识别?

提前致谢。

编辑: 我添加了这样的字典:

字典;

{'name': '0001', 'encodings': array([-2.05818519e-01,  1.50254071e-01,  6.18976653e-02, -4.57169749e-02,
       -1.07391022e-01,  5.82340732e-02,  1.71395876e-02, -6.04623035e-02,
        1.16265789e-01, -1.24150608e-02,  2.55038321e-01,  2.44104303e-03,
       -2.83989906e-01, -7.16208220e-02, -1.18346401e-01,  6.68070763e-02,
       -1.55324042e-01, -1.11675814e-01, -1.44206494e-01, -2.48661116e-02,
        4.79197986e-02, -3.35404947e-02, -2.06724089e-02,  5.70063107e-02,
       -1.29669383e-01, -2.63163120e-01, -2.25746073e-04, -1.47813573e-01,
        6.61746860e-02, -2.05630586e-01, -2.89494134e-02, -8.06591734e-02,
       -1.74903452e-01, -1.17690712e-01, -8.54253620e-02,  1.46108493e-03,
       -7.83449411e-03, -7.44407028e-02,  2.03817844e-01, -4.55042198e-02,
       -1.86186373e-01, -1.54956458e-02,  4.17447761e-02,  3.07781637e-01,
        1.80454239e-01,  1.86630823e-02,  5.65212369e-02, -9.69169587e-02,
        1.39696896e-01, -2.83250719e-01, -3.60675156e-04,  1.29852593e-01,
        1.69919491e-01,  2.47877426e-02,  2.96924170e-02, -1.77335575e-01,
       -2.26391852e-03,  1.38161883e-01, -1.87802404e-01,  1.11906916e-01,
        4.17628363e-02, -6.03848845e-02,  4.18845750e-03, -5.18675111e-02,
        2.16162637e-01,  4.84820902e-02, -1.24477677e-01, -8.92214701e-02,
        1.42987236e-01, -1.07746974e-01,  1.67147964e-02,  1.29372582e-01,
       -6.53869957e-02, -2.22480565e-01, -2.30741382e-01,  8.90350789e-02,
        4.72032219e-01,  1.94205374e-01, -1.43704772e-01,  1.38391014e-02,
       -2.22896904e-01, -4.31186557e-02,  2.22993959e-02,  5.01501486e-02,
       -1.09650522e-01,  2.00281274e-02, -1.12852253e-01,  8.36469531e-02,
        1.81203574e-01, -6.09542057e-03,  2.61690491e-03,  1.59612983e-01,
        5.85054457e-02, -5.77166155e-02,  2.08678767e-02,  7.78703764e-02,
       -1.74884677e-01,  4.89859655e-02, -4.20536213e-02,  2.84303911e-02,
        5.88016734e-02, -9.87139642e-02,  1.04927823e-01,  4.22693267e-02,
       -1.54544935e-01,  1.09288253e-01, -6.07409002e-03, -2.16740593e-02,
        1.54772867e-03, -7.67392293e-02, -2.64447108e-02,  4.24488354e-03,
        1.71442956e-01, -2.87759811e-01,  1.82956830e-01,  1.60583854e-01,
        3.09638251e-02,  1.53580874e-01,  9.96040404e-02,  3.40097286e-02,
        2.06465945e-02,  7.02249445e-03, -9.22998041e-02, -6.18107505e-02,
        7.82211274e-02, -8.35414380e-02,  1.60512835e-01, -1.17839221e-02])}


    columns = ', '.join("`" + str(x).replace('/', '_') + "`" for x in data.keys())
    values = ', '.join("'" + str(x).replace('/', '_') + "'" for x in data.values())
    sql = "INSERT INTO %s ( %s ) VALUES ( %s );" % (self.table_name, columns, values)
            
    with self.connection.cursor() as cursor:
      cursor.execute(sql)
    self.connection.commit()

【问题讨论】:

  • 大家好,我没有在mysql上浪费很多时间,而是切换到mangodb,它的工作就像一个利器。感谢您的回答

标签: python mysql face-recognition


【解决方案1】:

从数据库中检索编码时,需要将字符串转换为数组。

这里是示例 python 代码。

encoding = "[-2.05818519e-01 1.50254071e-01 6.18976653e-02 -4.57169749e-02 -1.07391022e-01 5.82340732e-02 1.71395876e-02 -6.04623035e-02 1.16265789e-01 -1.24150608e-02 2.55038321e-01 2.44104303e-03 -2.83989906e-01]" // by select * from table
result = encoding[1:][:-1].split(" ")
print ("The converted array is", result)
// [-2.05818519e-01, 1.50254071e-01, 6.18976653e-02, -4.57169749e-02, -1.07391022e-01, 5.82340732e-02, 1.71395876e-02, -6.04623035e-02, 1.16265789e-01, -1.24150608e-02, 2.55038321e-01, 2.44104303e-03, -2.83989906e-01]

也许,如果在插入之前将 dict 的类型更改为字符串,将 dict 插入数据库会很好。

【讨论】:

  • 您好李,非常感谢您的评论。我现在有这样的错误,ufunc 'subtract' did not contain a loop with signature matching types (dtype('<U32'), dtype('<U32')) -> dtype('<U32')
  • 您好 Suleyman Bozkurt,在将变量“Encoding”插入数据库之前,您需要删除所有不必要的制表符(\t)或换行符(\n)。
猜你喜欢
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
相关资源
最近更新 更多