连接 'str' 和 'NoneType' 对象

15

我想使用Python脚本将字符串存储到数据库中。但是运行代码时,我遇到了错误:“无法连接'str'和'NoneType'对象”。

如何解码这个字符串“Poste Si\xe8ge”,以便成功存储?

    insert="INSERT INTO blacklist VALUES(INET_ATON('"+ long2ip(row[0]) +"'),NOW(),'"+ check.country +"',4,' ','"+detect[0]+"','"+ispTarget[0]+"')"

detect[0]=Poste Si\xe8ge

TypeError: cannot concatenate 'str' and 'NoneType' objects

请帮帮我


3
请展示你正在做什么。 - poke
insert="INSERT INTO blacklist VALUES(INET_ATON('"+ long2ip(row[0]) +"'),NOW(),'"+ check.country +"',4,' ','"+detect[0]+"','"+ispTarget[0]+"')" 类型错误:无法连接'str'和'NoneType'对象 - jarmouz
1
问题似乎不在解码部分。你正在使用字符串和一些你认为是字符串的东西进行连接(可能使用+),但实际上未设置。能否提供更多代码来帮助你? - Jaay
你的变量中至少有一个未定义,请检查 check.countrydetect[0]ispTarget[0] 的值。 - Jaay
请不要通过字符串拼接构建 SQL 语句,而应该使用参数化查询。 - Duncan
问题已经解决,谢谢 @Jaay。 - jarmouz
2个回答

20

你尝试过使用内置函数str() 吗?

如果你想将字符串对象与其他数据类型连接起来,则需要将其他类型转换为str(other_data_type)

希望这可以帮助你。


这将抑制错误,但几乎肯定不会修复由某些变量没有预期(字符串)值引起的错误。 - lvc
4
请注意,"str(None)" 返回的是 "None" 而不是空字符串。 - Salami

10

类型错误:无法连接字符串和NoneType对象

这个错误其实很好地描述了正在发生的事情:您试图将一个字符串与其他一些东西连接起来,而这个东西恰好是None。例如:

>>> 'foo' + None
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    'foo' + None
TypeError: cannot concatenate 'str' and 'NoneType' objects
当然,您可能不会明确地尝试连接 None ,而是有一些变量,例如'foo' + bar 。现在这意味着bar实际上是 None ,因此连接失败。
在您的情况下,您正在将 long2ip(row [0]) check.country detect [0] ispTarget [0] 值与字符串连接。因此,其中至少一个是 None 。因此,请检查这些值,并确保它们中没有任何一个是 None (例如,请确保 long2ip 实际上返回一个值)。然后它应该可以正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接