我有一个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中存储数据?
如何操作数据以便我能够以函数所需的字符串类型获取数据?**
答案 0 :(得分:0)
所以经过朋友的一些研究和帮助,你可以简单地使用
send_addr[0][0].decode("string_escape")