在python中将数据从sqlite转换为十六进制字符串表示法

时间:2016-02-19 23:17:23

标签: python string sqlite unicode

我有一个64位地址,我想存储在sqlite db列中。该列的类型为VARCHAR。这就是我将数据存储到数据库的方式。使用游标对象c在python中完成sql。

c.execute("INSERT INTO SENSORS(XBEE_ID) VALUES('\x00\x13\xA2\x00\x40\xe9\x21\x9d')")

然后我想从数据库中读取该地址并将其传递给一个函数,该函数然后将数据发送到某些xbees。我使用的xbee库接受表单中的地址:

dest_addr = '\x00\x13\xa2\x00\x40\xe9\x21\x93'
xbee.tx(dest_addr_long = dest_addr ,data=newState)

当我使用

repr(dest_addr) 

我得到了

 '\x00\x13\xa2\x00@\xe9!\x93'

type(dest_addr)

给出

<type 'str'>

但是当我从数据库中读取数据并存储到变量时,我收到一个错误“为'dest_addr_long'提供的数据不是8字节长。

 addr_long = c.fetchall()
 addr_long2 = addr_long([0][0])
 xbee.tx(dest_addr_long = addr_long2,data=newState)

当我从数据库中读取数据时,它的类型为unicode。

repr(send_addr[0][0])

返回

u'\\x00\\x13\\xa2\\x00\\x40\\xe9\\x21\\x93'

<type 'unicode'>

,所以我尝试了这个 - Convert a Unicode string to a string in Python (containing extra symbols) 但它不起作用。

我基本上是在寻找与此相反的观点。 Converting string into hex representation

**所以我的问题, 我的方法是否适合在db中存储数据?

如何操作数据以便我能够以函数所需的字符串类型获取数据?**

1 个答案:

答案 0 :(得分:0)

所以经过朋友的一些研究和帮助,你可以简单地使用

send_addr[0][0].decode("string_escape")