我在PostgresQL表中有一个BYTEA类型的列。model类将列定义为LargeBinary
字段,文档中说“当创建表时,二进制类型生成BLOB或BYTEA,并且还使用每个DB-API提供的二进制可调用文件来转换传入的值。”
我有一个Python字符串,我想把它插入这个表中。在
Python字符串是:
'\x83\x8a\x13,\x96G\xfd9ae\xc2\xaa\xc3syn\xd1\x94b\x1cq\xfa\xeby$\xf8\xfe\xfe\xc5\xb1\xf5\xb5Q\xaf\xc3i\xe3\xe4\x02+\x00ke\xf5\x9c\xcbA8\x8c\x89\x13\x00\x07T\xeb3\xbcp\x1b\xff\xd0\x00I\xb9'
我的SQLAlchemy代码的相关片段是:
^{pr2}$我得到了一个错误:
sqlalchemy.exc.DataError: (DataError) invalid byte sequence for encoding "UTF8": 0x83
'\n UPDATE table\n SET x=%(x)s\n WHERE id=%(id)s\n ' {'x': '\x83\x8a\x13,\x96G\xfd9ae\xc2\xaa\xc3syn\xd1\x94b\x1cq\xfa\xeby$\xf8\xfe\xfe\xc5\xb1\xf5\xb5Q\xaf\xc3i\xe3\xe4\x02+\x00ke\xf5\x9c\xcbA8\x8c\x89\x13\x00\x07T\xeb3\xbcp\x1b\xff\xd0\x00I\xb9', 'id': '1',}
如果我进入pgadmin3控制台并直接输入UPDATE命令,那么更新工作正常。这个错误显然来自SQLAlchemy。字符串是有效的Python2字符串。这栏有BYTEA字样。查询不使用SQLAlchemy。有人知道Python为什么认为这个字节字符串是UTF-8格式的吗?在
尝试用^{} 包装数据:
相关问题 更多 >
编程相关推荐