将编码的Unicode字符串存储到Postgres中,但检索不同的随机字符串

时间:2017-05-18 04:57:08

标签: python postgresql unicode

我有一个将用户数据存储到postgres表中的python服务器。我开始在我的数据库中使用SQLite并且没有任何问题,但在转换为postgres后,我遇到了为我的encr_password存储unicode编码字符串的问题。

CREATEuser存储此数据:

{'fname': ['John'], 'encr_password': [b'$2b$14$NvAJc1nxSRpQnuK5iAUxyeMN9wobMShjUYxCpANlsYUn8M1qir1Tq'], 'email': ['john@doe.com'], 'lname': ['Doe']}

但是当我从Postgres服务器检索数据时,我收到了:

[{'encr_password': '\\x243262243134244675375137324b4953614c5a70706354355a756d712e77433365576d42554e4f47315a486c43593958353454474248494969726b43', 'fname': 'John', 'user_id': 1, 'email': 'john@doe.com', 'lname': 'Doe'}]

在使用SQLite时,我的检索再次完全返回了我的预期并以其初始形式存储。

  • Python Server 3.5.2
  • Bcrypt 3.1.1

1 个答案:

答案 0 :(得分:0)

您似乎将base64格式的数据推送到bytea字段。你不需要这样做。以二进制转义形式提供二进制文件,或以十六进制转义形式提供per the PostgreSQL manual

如果必须将其编码为base64,请将其存储在text字段中。或者使用encodedecode函数将base64转换为输入和输出的bytea。