SQLAlchemy и Python 3.6 «Ошибка типа: строковый аргумент без кодировки» - PullRequest
0 голосов
/ 03 декабря 2018

Следующий простой код работает в Python 3.5, SQLAlchemy == 1.2.3

article = session.query (Article) .filter (Article.date_published> '2018-11-01 00:00:00') .order_by (Article.c_id.desc ()). all ()

, но по какой-то причине происходит сбой в Python 3.6, SQLAlchemy == 1.2.14

Traceback (последний вызов был последним): Файл "/scripts/cluster.py", строка 39, в article = session.query (Article) .filter (Article.date_published> '2018-11-01 00:00:00'). Order_by (Article.c_id.desc ()). all ()
Файл "/venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py", строка 2843, во всем списке возврата (self)
Файл"/venv/lib/python3.6/site-packages/sqlalchemy/orm/loading.py", строка 98, в случаях util.raise_from_cause (err)
File "/venv/lib/python3.6/site-packages / sqlalchemy / util / compat.py ", строка 265, в рейсе Raise_from_cause (тип (исключение), исключение, tb = exc_tb, причина = причина)
Файл" /venv/lib/python3.6/site-packages/sqlalchemy/util/compat.py ", строка 249, в рейз-рейзе
Файл "/venv/lib/python3.6/site-packages/sqlalchemy/orm/loading.py", строка 79, в строках экземпляров = [proc (строка) для строки в выборке]
Файл "/ venv /lib / python3.6 / site-packages / sqlalchemy / orm / loading.py ", строка 79, в строках = [proc (строка) для строки при получении]
Файл" /venv/lib/python3.6/site-packages / sqlalchemy / orm / loading.py ", строка 511, в _instanceloaded_instance, populate_existing, populators)
Файл" /venv/lib/python3.6/site-packages/sqlalchemy/orm/loading.py ",строка 611, в _populate_full dict_ [ключ] = получатель (строка)
Файл "/venv/lib/python3.6/site-packages/sqlalchemy/sqlalchemy/sql/sqltypes.py", строка 902, в значении процесса = байты (значение)
TypeError: строковый аргумент без кодировки

UPD1:
Похоже, проблема в файле url_hash, где я храню хеши URL-адресов md5.
url_hash= Столбец (двоичный (16))

Я сохраняю хеш-коды в таблице с кодом ниже
url_hash = hashlib.md5 (article.url.encode ('utf-8')). Digest ()

При выборе fИз таблицы статей и набора данных есть несколько «плохих хэшей». Я получаю упомянутые выше ошибки.

пример плохих хэшей:
0x54c2ab3e521b4b197e447268792b4651
0x217a45597b1c13647d282017d4b03b18 * SQL4 * * *== 1.2.3 все работает нормально с той же БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...