我正在尝试在我的sqlite3数据库中插入一个加密的用户名,但其中包括b'
继续执行实际值。
这会导致我的申请出现问题。
我的代码如下:
hashed_username = enc(prompt_account_username, salt)
print('\n\nusername: {}\n\n'.format(hashed_username))
打印:
username:
b'sc\x00\x02\x16\x88\x04\xa2\x9d\xb9!\xe0\x9e-5\xb3\x8a\xd8r\xbc\x83\x01\r\x98\xb1\xe3\xb2i=\x16\xc8Y\xbe\xdd\x0f\x8e\x8c\xa2\xb0\xd0R\xf7gx2\x1d\xfb\xfeX\xda\xb9Y\xd6Ls\x88\xaa<\x9c\x12\xf3\xbeq\r\x8d\xcb\xc0\x8adF\x1dl\xc5\xde'
然后插入此完整字节值,包括b'
当我跑步时:
conn.execute("""
INSERT INTO my_acct
(acct_username)
VALUES (?) """, (v[0], )
)
我怎样才能让它在没有b'
的情况下插入值,其值如下:
sc\x00\x02\x16\x88\x04\xa2\x9d\xb9!\xe0\x9e-5\xb3\x8a\xd8r\xbc\x83\x01\r\x98\xb1\xe3\xb2i=\x16\xc8Y\xbe\xdd\x0f\x8e\x8c\xa2\xb0\xd0R\xf7gx2\x1d\xfb\xfeX\xda\xb9Y\xd6Ls\x88\xaa<\x9c\x12\xf3\xbeq\r\x8d\xcb\xc0\x8adF\x1dl\xc5\xde
谢谢
答案 0 :(得分:3)
您需要使用memoryview
将二进制数据插入sqlite,如下所示:
conn.execute("""
INSERT INTO my_acct
(acct_username)
VALUES (?) """, (memoryview(v[0]), )
)
注意:在 python 2 中,在这种情况下,我会使用内置的buffer
。 python 3 中不再提供buffer
,并且已被memoryview
取代。