python-3.x - 弃用警告 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,
对于其他查询,我也收到此问题。提供的示例仅作为示例。
为什么我会收到此警告?
解决方案
为什么我会收到此警告?
当他们添加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。