0
我发现如何只用mysql更新mysql数据库中的空变量的唯一方法。在python中的python sql语句优化
我有这样一种说法:
sql = "INSERT INTO `table` VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)\
ON DUPLICATE KEY UPDATE Data_block_1_HC1_sec_voltage=IF(VALUES(Data_block_1_HC1_sec_voltage)IS NULL,Data_block_1_HC1_sec_voltage,VALUES(Data_block_1_HC1_sec_voltage)),\
`Data_block_1_TC1_1`=IF(VALUES(`Data_block_1_TC1_1`)IS NULL,`Data_block_1_TC1_1`,VALUES(`Data_block_1_TC1_1`)),\
`Data_block_1_TC1_2`=IF(VALUES(`Data_block_1_TC1_2`)IS NULL,`Data_block_1_TC1_2`,VALUES(`Data_block_1_TC1_2`)),\
`Data_block_1_TCF1_1`=IF(VALUES(`Data_block_1_TCF1_1`)IS NULL,`Data_block_1_TCF1_1`,VALUES(`Data_block_1_TCF1_1`)),\
`HC1_HC1_output`=IF(VALUES(`HC1_HC1_output`)IS NULL,`HC1_HC1_output`,VALUES(`HC1_HC1_output`)),\
`Data_block_1_HC1_sec_cur`=IF(VALUES(`Data_block_1_HC1_sec_cur`)IS NULL,`Data_block_1_HC1_sec_cur`,VALUES(`Data_block_1_HC1_sec_cur`)),\
`Data_block_1_HC1_power`=IF(VALUES(`Data_block_1_HC1_power`)IS NULL,`Data_block_1_HC1_power`,VALUES(`Data_block_1_HC1_power`)),\
`HC1_HC1_setpoint`=IF(VALUES(`HC1_HC1_setpoint`)IS NULL,`HC1_HC1_setpoint`,VALUES(`HC1_HC1_setpoint`))\
"
数据块在DB列。主键是日期时间。现在有8列,但我会有更多的变量(更多列)。我不是很擅长Python,但我不喜欢这种说法,因为它的硬编码。我是否可以在for循环或某事中以某种方式做出这个声明,所以它不需要很长时间,我不必手动编写所有变量。
THX对您有所帮助
所以,你到目前为止尝试过什么? – ewcz
没有什么,因为我写我不是很擅长python,我只是不知道我的选择。我认为我可以在for循环中使用像%s = IF(VALUES(%s)IS NULL,%s,VALUES(%s)) - 将每个列表放入列表中,然后加入它。但我仍然不知道是否有更好的解决方案。这就是为什么我问那些可以使用Python比我更好的人 –