将字节数据插入Sqlite,而不是b'在

时间:2016-01-09 15:49:39

标签: python-3.x sqlite byte

我正在尝试在我的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

谢谢

1 个答案:

答案 0 :(得分:3)

您需要使用memoryview将二进制数据插入sqlite,如下所示:

conn.execute("""
        INSERT INTO my_acct
        (acct_username)
        VALUES (?) """, (memoryview(v[0]), )
        )


注意:在 python 2 中,在这种情况下,我会使用内置的buffer python 3 中不再提供buffer,并且已被memoryview取代。