【问题标题】:bcrypt and postgresql. What data type should be used?bcrypt 和 postgresql。应该使用什么数据类型?
【发布时间】:2015-11-26 17:23:52
【问题描述】:

在 flask-bcrypt 扩展上,加密的字符串存储为字节对象,如 这个(使用 python 3.5):

>>> user.password
b'$2b$12$3UutBDuGIrxp2z95alVTp.0HO3qQEtk7O/emR0UC27aNaJKC/WCU.'

但是,当该字符串存储在 postgresql 上时,它会被转换并变得像 这个:

>>> user.password
'\\x243262243132244a546d7673453238354c754a497a4a334f37644a307559672f52796a486a526c4f443431536f387748544132303077447176555675'

当然,它不会通过flask-bcrypt检查密码。我试过encode 将密码保存到数据库之前以及每当调用检查密码时,我 解码回来。它有效。

我的问题是,我应该使用什么数据类型?我必须使用BLOB 数据吗 在postgresql上输入?还是我在上面所做的(encodedecode)是正确的做法? 我在使用 sqlite3 时没有这个问题。

【问题讨论】:

  • 显示存储和检索这些值的代码
  • @ClodoaldoNeto 你的意思是用户模型吗?
  • 应该存储为文本

标签: python postgresql bcrypt


【解决方案1】:

您需要将字节转换为 python 字符串(因为所有字节都是 ascii 字符),然后您可以将其存储在文本(或其他字符类型)列中

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,我在 Postgresql 中使用 BYTEA 数据类型解决了它。我认为在 Postgre 中将字节数组写入 VARCHAR 数据类型时会出现问题。这可能与数据库编码以及从字节到 varchar 的转换的细节有关。

    【讨论】:

      猜你喜欢
      • 2011-10-19
      • 2019-07-08
      • 1970-01-01
      • 2013-03-21
      • 2011-09-03
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      相关资源
      最近更新 更多