如何使用Python将NULL数据插入MySQL数据库?

时间:2011-04-01 00:24:28

标签: python mysql

从Python脚本向MySQL插入一些数据时,我遇到了一个奇怪的错误。它基本上与我插入的变量空白有关。我认为MySQL不喜欢空白变量但是还有其他东西我可以改变它以便它与我的insert语句一起工作吗?

我可以成功使用IF语句将其变为0,如果它是空白的,但这可能会破坏我计划稍后在MySQL中执行的一些数据分析。有没有办法将它转换为NULL或其他东西,所以MySQL接受它但不添加任何东西?

4 个答案:

答案 0 :(得分:123)

使用mysqldb和cursor.execute()时,传递值None,而不是“NULL”:

value = None
cursor.execute("INSERT INTO table (`column1`) VALUES (%s)", (value,))

找到答案here

答案 1 :(得分:1)

如果col1是char,而col2是int,则可能是一个窍门:

insert into table (col1, col2) values (%s, %s) % ("'{}'".format(val1) if val1 else "NULL", val2 if val2 else "NULL");

您无需在%s中添加'',可以在将值传递给sql之前进行处理。

此方法在通过sqlalchemy会话执行sql时有效,例如session.execute(text(sql))

ps:尚未对sql进行测试

答案 2 :(得分:-2)

为什么不将变量设置为某个字符串,如'no price',然后在想要对数字进行数学运算时将其过滤掉?

filter(lambda x: x != 'no price',list_of_data_from_database)

答案 3 :(得分:-11)

快速检查空白,如果是,请将其设置为NULL:

if(!variable_to_insert)
    variable_to_insert = "NULL"

...然后确保插入的变量不在insert语句的引号中,如:

insert = "INSERT INTO table (var) VALUES (%s)" % (variable_to_insert)
...

不喜欢:

insert = "INSERT INTO table (var) VALUES ('%s')" % (variable_to_insert)
...
相关问题