如何在MySQL中输入Null / None

时间:2019-05-25 20:43:14

标签: mysql python-3.x pymysql

我正在使用Python 3.7和pyMySQL作为MySQL服务器的连接器。

我正在尝试执行以下查询:

query="INSERT IGNORE INTO  tweets (ID, Text,create," \
                    "Date,local,foolowed,Count," \
                    "isqwdii,inR,in " \
                    "Sensitive,redirection)" \
                    "VALUES (%s,%s,%s,%s,%s,%d,%d,%d,%s,%s,%d,%d)"
vals=[kwargs['ID'], kwargs['Text'],
                   kwargs['create'], kwargs['Date'],
                   kwargs['local'], kwargs['foolowed'],
                   kwargs['Count'], kwargs['isascii'],
                   kwargs['inR'], kwargs['in'],
                   kwargs['Sensitive'], kwargs['redirection']] 
self.__cur.execute(query,vals)
self.__conn.commit()

问题是某些%d可以为None,并且在发生这种情况时出现以下错误“ TypeError:%d格式:需要数字,而不是str”。

我无法使用该格式,因为它将使数据库中的get成为字符串。我希望数据库将其获取为None / NULL

预先感谢

1 个答案:

答案 0 :(得分:0)

我认为您需要测试Python代码中的NULL是否为%d,如果是,请将%s替换为 string >>> type['isascii'] = '%d' >>> if kwargs['isascii'] is None: >>> type['isascii'] = '%s' >>>> query= "INSERT IGNORE INTO tweets (ID, Text,create," \ "Date,local,foolowed,Count," \ "isqwdii,inR,in " \ "Sensitive,redirection)" \ f"VALUES (%s,%s,%s,%s,%s,%d,%d,{str(type['isascii'])},%s,%s,%d,%d)" 。 / p>

我在PHP中的经验是Null是一个字符串类型,因此我假设这会传递给Python MySQL接口

因此,伪代码为:

{{1}}

抱歉,因为我不了解Python 3.7语法,但我希望这能为您提供概念。

Leo120的回复:

  

实际上,当我将所有占位符都放置为%s(并根据MySQL的需要获取所有数据)时,它就起作用了。事实证明,在pymysql中,%s代表所有人,很奇怪。谢谢您的帮助