SQLAlchemy和Python 3.6“ TypeError:没有编码的字符串参数”问题

时间:2018-12-03 20:32:45

标签: python-3.x sqlalchemy

以下简单代码可在Python 3.5,SQLAlchemy == 1.2.3中工作

articles = 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

回溯(最近通话最近): 在文章= session.query(Article).filter(Article.date_published>'2018-11-01 00:00:00')中的文件“ /scripts/cluster.py”,第39行,.order_by(Article.c_id.desc ())。all()
所有返回列表中的文件“ /venv/lib/python3.6/site-packages/sqlalchemy/orm/query.py”,行2843,
在实例util.raise_from_cause(err)中,文件“ /venv/lib/python3.6/site-packages/sqlalchemy/orm/loading.py”第98行
在raise_from_cause reraise(类型(异常),异常,tb = exc_tb,cause = cause)中添加文件“ /venv/lib/python3.6/site-packages/sqlalchemy/util/compat.py”,行265
重新提高价值的文件“ /venv/lib/python3.6/site-packages/sqlalchemy/util/compat.py”,第249行,
文件“ /venv/lib/python3.6/site-packages/sqlalchemy/orm/loading.py”,第79行,在实例中,行= [获取行时的proc(row)]
文件“ /venv/lib/python3.6/site-packages/sqlalchemy/orm/loading.py”,第79行,以行= [proc(row)for fetch in row]
在_instance load_instance,populate_existing,populators中的文件“ /venv/lib/python3.6/site-packages/sqlalchemy/orm/loading.py”,第511行,
_populate_full dict_ [key] = getter(row)
中的文件“ /venv/lib/python3.6/site-packages/sqlalchemy/orm/loading.py”,第611行 文件“ /venv/lib/python3.6/site-packages/sqlalchemy/sql/sqltypes.py”,第902行,过程值=字节(值)
TypeError:不带编码的字符串参数

UPD1:
看来问题出在url_hash字段中,我在其中存储了md5的url哈希。
url_hash = Column(二进制(16))

我使用以下代码将哈希保存到表中
url_hash = hashlib.md5(article.url.encode('utf-8'))。digest()

从商品表中进行选择并且数据集具有一些“错误哈希”时,我会遇到上述错误。

不良哈希的示例:
0x54c2ab3e521b4b197e447268792b4651
0x217a45597b1c13647d282017d4b03b18

在Python 3.5上,SQLAlchemy == 1.2.3在同一个DB上一切正常。

0 个答案:

没有答案