Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python,SQL:使用字典进行重复更新时插入到…中_Python_Mysql_Sql_Pymysql - Fatal编程技术网

Python,SQL:使用字典进行重复更新时插入到…中

Python,SQL:使用字典进行重复更新时插入到…中,python,mysql,sql,pymysql,Python,Mysql,Sql,Pymysql,请帮帮我。我需要将字典插入表中,或者更新它(如果存在)。正如我在stackoverflow中发现的,如何将dict插入到sql表中有很多问题,但我找不到,如何使用dictionary执行insert..update(如果存在)。有人有想法吗 这是我的实际代码(不起作用): 我有语法错误,因为值部分没有正确转义。但是,如果我使用最好的解决方案之一插入dict(用“?”创建占位符,然后使用execute(查询,值)),我还有其他错误: TypeError:在字符串格式化过程中并非所有参数都已转换 谢

请帮帮我。我需要将字典插入表中,或者更新它(如果存在)。正如我在stackoverflow中发现的,如何将dict插入到sql表中有很多问题,但我找不到,如何使用dictionary执行insert..update(如果存在)。有人有想法吗

这是我的实际代码(不起作用):

我有语法错误,因为值部分没有正确转义。但是,如果我使用最好的解决方案之一插入dict(用“?”创建占位符,然后使用execute(查询,值)),我还有其他错误:
TypeError:在字符串格式化过程中并非所有参数都已转换


谢谢您的帮助。

您的问题是MySQL查询中的语法不正确,而不是在合并方法中。实际上,
插入到。。。重复键更新…
是合并表的方法之一。如果您检查return
print(query)
,则会看到错误

您的查询:

INSERT INTO DB_NAME (added) VALUES (1455102006) ON DUPLICATE KEY UPDATE updated_at=2016-02-10 11:00:06.594000 
如何看mysql不解析日期。日期应在引号中或使用

右查询:

INSERT INTO DB_NAME (added) VALUES (1455102006) ON DUPLICATE KEY UPDATE updated_at='2016-02-10 11:00:06.594000'
为此,您可以在以下位置替换行代码:

update_query = u', '.join([u"{}='{}'".format(k, v) for k, v in exists_item])
为更新值添加引号

update_query = u', '.join([u"{}='{}'".format(k, v) for k, v in exists_item])