首页 > 解决方案 > 弃用警告 Python mysql 连接器

问题描述

我正在使用带有 sqlalchemy 的 python mysql 连接器。我尝试使用此代码截断表:

 session = db.Session()

 session.execute('''TRUNCATE TABLE Orders''')
 session.commit()

但我收到了这个警告。

python3.8/site-packages/mysql/connector/connection_cext.py:506: DeprecationWarning: PY_SSIZE_T_CLEAN 将需要'#' 格式 self._cmysql.query(query,

对于其他查询,我也收到此问题。提供的示例仅作为示例。

为什么我会收到此警告?

标签: python-3.x

解决方案


为什么我会收到此警告?

当他们添加PY_SSIZE_T_CLEAN 宏时,您可能正在使用 1.4.3 版之前的 mysql-connector

此外,某些模块(如 unittest)默认显示 DeprecationWarning、PendingDeprecationWarning、ResourceWarning 和 ImportWarning,即使它们默认被忽略。

更多信息:

从 Python 3.8 开始,如果在包含 Python.h 之前未定义宏 PY_SSIZE_T_CLEAN,它将在 Python C API 中引发 #use without PY_SSIZE_T_CLEAN的警告。

https://python.readthedocs.io/en/stable/c-api/arg.html#strings-and-buffers

对于所有 # 格式变体(s#、y# 等),长度参数(int 或 Py_ssize_t)的类型通过在包含 Python.h 之前定义宏 PY_SSIZE_T_CLEAN 来控制。如果定义了宏,则长度是 Py_ssize_t 而不是 int。此行为将在未来的 Python 版本中更改为仅支持 Py_ssize_t 并删除 int 支持。最好总是定义 PY_SSIZE_T_CLEAN。


推荐阅读