python - MySQL 版本 8 Python 3.7 无法将 None 值写为 NULL
问题描述
以前版本的代码使用 Python 2.7 可以很好地写入 AWS MySQL 版本 8,其中包含以下内容:
"""插入到 test_data(test_instance_testid,
meas_time, data_type_name, value,corner_case, xmit, string_value) VALUES('15063', '2021-03-19 20:36:00', 'DL_chamber_temp', '23.4', 'None ', '无', '无')"""
但是现在,将 Python 3.7 移植到同一台服务器上,我得到了这个:
pymysql.err.InternalError:(1366,“不正确的整数值:第 1 行的列 'xmit' 的'None'”)
这是有道理的,因为它是一个 str 值 'None' 而不是 Python 类型 None (尽管它曾经可以工作)。
将这些列填充为 NULL 值是合法的——这是它们在 test_data 表中的默认值。
如果我更改代码并将值设置为 Python None,我会得到一个我完全不理解的错误:
"""插入到 test_data(test_instance_testid,
meas_time, data_type_name, value,corner_case, xmit, string_value) VALUES('15063', '2021-03-19 20:36:00', 'DL_chamber_temp', '23.4', 无,无,无)"""
pymysql.err.InternalError:(1054,“'字段列表'中的未知列'None'”)
我非常感谢任何帮助或建议。谢谢,迈克
谢谢您的帮助!是的,NULL 确实有效,但我一直坚持如何在我的方法中动态处理值类型。根据调用的不同,我需要在一种情况下写一个带引号的值,在其他情况下写一个不带引号的 NULL。出于某种原因,我的旧代码(不合逻辑!)有效。我已经尝试了我能想到的一切,但没有任何运气。关于如何做到这一点的任何想法?
解决方案
也不应该适用于 python 2.7。'None' 是一个字符串,您不能将其放入 Integer 字段。无论如何试试这个
"""INSERT INTO test_data(test_instance_testid,
meas_time, data_type_name, value, corner_case, xmit, string_value) VALUES('15063', '2021-03-19 20:36:00', 'DL_chamber_temp', '23.4', null, null, null)"""
推荐阅读
- python - 使用 BS4 的网页抓取问题 - 需要历史天气信息 - 文本静音
- java - 从 Java 填写 Google 表单
- java - 图的高效junit测试?
- c - C Programming Malloc 做得不对
- python - 使用 Python 从嵌入式谷歌地图中抓取点信息
- php - PHP - 人名的正则表达式(姓氏,名字)
- css - React JS react-bootstrap PopOver 使用 className 更改不同按钮的背景颜色
- android - Google Fit api 不跟踪数据
- postgresql - elixir,ecto:无法将参数传递给“CREATE VIEW”原始 SQL 查询
- c# - 将特定文件夹中的所有类标记为已过时