我读了很多类似的问题,但没有一个清楚地回答我的问题。
我在EncryptedTypemysql 表列上使用 sqlalchemy-utils。
表创建和插入都可以,但是当我尝试进行查询时,接收:
Traceback (most recent call last):
File "workspace/bin/test.py", line 127, in <module>
result = session.query(Tester).all()
File "workspace\ERP\venv\lib\site-packages\sqlalchemy\orm\query.py", line 3244, in all
return list(self)
File "workspace\venv\lib\site-packages\sqlalchemy\orm\loading.py", line 101, in instances
cursor.close()
File "workspace\venv\lib\site-packages\sqlalchemy\util\langhelpers.py", line 69, in __exit__
exc_value, with_traceback=exc_tb,
File "workspace\venv\lib\site-packages\sqlalchemy\util\compat.py", line 178, in raise_
raise exception
File "workspace\venv\lib\site-packages\sqlalchemy\orm\loading.py", line 81, in instances
rows = [proc(row) for row in fetch]
File "workspace\venv\lib\site-packages\sqlalchemy\orm\loading.py", line 81, in <listcomp>
rows = [proc(row) for row in fetch]
File "workspace\venv\lib\site-packages\sqlalchemy\orm\loading.py", line 642, in _instance
populators,
File "workspace\venv\lib\site-packages\sqlalchemy\orm\loading.py", line 779, in _populate_partial
dict_[key] = getter(row)
File "workspace\venv\lib\site-packages\sqlalchemy\engine\result.py", line 107, in __getitem__
return processor(self._row[index])
File "workspace\venv\lib\site-packages\sqlalchemy\sql\sqltypes.py", line 944, in process
value = bytes(value)
TypeError: string argument without an encoding
我发现这个错误只在使用 python 3 时发生,而不是使用 python 2。
而且问题出在 sqlalchemy类型上,因为我在、和列中bynary得到相同的错误。 由于在 python3 中需要对字符串进行编码,我将第944 行的代码更改为并且 al 运行良好,所以我的问题是:BinaryVarbinaryBlob
bytessqlalchemy\sql\sqltypes.pyvalue = bytes(value, 'utf-8)
为什么我需要更改 sqlalchemy 代码?sqlalchemy 完全可以与 python3 一起使用吗?更改包的代码是否安全?
森林海
江户川乱折腾
胡子哥哥
相关分类