為什么在 Python3 的 SQLAlchemy 中使用 BINARY 會導致 TypeError
我讀了很多類似的問題,但沒有一個清楚地回答我的問題。我在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 運行良好,所以我的問題是:BinaryVarbinaryBlobbytessqlalchemy\sql\sqltypes.pyvalue = bytes(value, 'utf-8)為什么我需要更改 sqlalchemy 代碼?sqlalchemy 完全可以與 python3 一起使用嗎?更改包的代碼是否安全?
查看完整描述