SQLAlchemy Largebinary迁移数据后没有编码

时间:2018-08-06 14:27:05

标签: python sqlite sqlalchemy

我运行一个带有sqlalchemy的Flask服务器,并连接到sqlite数据库。

要更新数据库表,我将数据导出到文件中,更新了必要的表,然后再次导入了数据。数据库中的这些数据都是正确的,并且位置正确。 问题在于密码,密码存储为Blob(在sqlalchemy中为大二进制)。

使用密码创建新帐户时,该帐户可立即使用,没有任何问题。 但是,我从旧数据库导入的所有旧密码不再起作用,并引发错误。引发的错误如下:

TypeError: string argument without an encoding

数据库中新密码的类型应为:

<class 'bytes'>

使用迁移的密码,我什至无法检查它是什么类型,因为它在检索该字段时会引发TypeError。

数据存储为blob:password BLOB NOT NULL

无效的密码:$2b$12$CC6OVZTOy3Bc9bsxAeALpuJPc.iZmVwXFB/Cj6.xRlgF2dRdTh11y

工作密码: $2b$12$NL8reAO7rx1NC5DwgeWVt.ojV0I6czlOKcXAOF87L5NoVsdmOulle

1 个答案:

答案 0 :(得分:0)

事实证明,我使用的工具未正确导出数据。然后,由于sqlite没有硬类型强制执行,因此二进制数据丢失了。 我通过再次导出数据并手动将所有字符串转换为它们的字符表示形式并再次导入来解决此问题。