bcrypt 和 postgresql。应该使用什么数据类型?
bcrypt and postgresql. What data type should be used?
在 flask-bcrypt 扩展中,加密的字符串存储为字节对象,如
这个(python 3.5):
>>> user.password
b'bUutBDuGIrxp2z95alVTp.0HO3qQEtk7O/emR0UC27aNaJKC/WCU.'
但是,当该字符串存储在 postgresql 上时,它被转换并变得像
这个:
>>> user.password
'\x243262243132244a546d7673453238354c754a497a4a334f37644a307559672f52796a486a526c4f443431536f387748544132303077447176555675'
当然不会通过flask-bcrypt校验密码。我尝试 encode
在将密码保存到数据库之前以及每当检查密码时调用我
解码回来。并且有效。
我的问题是,我应该使用什么数据类型?我必须使用 BLOB
数据吗
在 postgresql 上输入?或者我上面所做的(encode
和 decode
)是正确的做法吗?
我在使用sqlite3时没有这个问题。
我有一个类似的问题,我在 Postgresql 中使用 BYTEA 数据类型解决了它。我认为在 Postgre 中将字节数组写入 VARCHAR 数据类型时会出现问题。这可能与数据库编码以及从字节到 varchar 的转换的细节有关。
您需要将字节转换为 python 字符串(因为所有字节都是 ascii 字符)然后您可以将其存储在文本(或其他字符类型)列中
在 flask-bcrypt 扩展中,加密的字符串存储为字节对象,如 这个(python 3.5):
>>> user.password
b'bUutBDuGIrxp2z95alVTp.0HO3qQEtk7O/emR0UC27aNaJKC/WCU.'
但是,当该字符串存储在 postgresql 上时,它被转换并变得像 这个:
>>> user.password
'\x243262243132244a546d7673453238354c754a497a4a334f37644a307559672f52796a486a526c4f443431536f387748544132303077447176555675'
当然不会通过flask-bcrypt校验密码。我尝试 encode
在将密码保存到数据库之前以及每当检查密码时调用我
解码回来。并且有效。
我的问题是,我应该使用什么数据类型?我必须使用 BLOB
数据吗
在 postgresql 上输入?或者我上面所做的(encode
和 decode
)是正确的做法吗?
我在使用sqlite3时没有这个问题。
我有一个类似的问题,我在 Postgresql 中使用 BYTEA 数据类型解决了它。我认为在 Postgre 中将字节数组写入 VARCHAR 数据类型时会出现问题。这可能与数据库编码以及从字节到 varchar 的转换的细节有关。
您需要将字节转换为 python 字符串(因为所有字节都是 ascii 字符)然后您可以将其存储在文本(或其他字符类型)列中