我想插入到MySQL或更新MySQL,如果存在,而不必运行2个不同的查询。
我查了Create if an entry if it doesn't exist, otherwise update?
INSERT INTO table (a) VALUES (0) ON DUPLICATE KEY UPDATE
但只有当你在键上检查双精度时才有效。问题是我想检查另一个字段,它不是关键字,但仍然保持唯一性。我想在我的字典中检查'符号'时添加或更新:
我得到的数据是(例子)
forex = [{'symbol': 'EURUSD', 'price': '1.06763000'}, {'symbol': 'GBPEUR', 'price': '0.90339600'}, {'symbol': 'EURJPYC', 'price': '0.000011200'}]
我想修改的INSERT INTO是:
mycursor.executemany(f"INSERT INTO `param_forex` (Ticker,Price)
VALUES ( %(symbol)s, %(price)s)", forex)
mydb.commit()
我不想使用REPLACE,因为自动递增字段(REPLACE删除和插入)我正在检查重复的列是表中的Ticker
和字典中的符号。
我卡住了。有解决办法吗?
1条答案
按热度按时间jckbn6z71#
您可以使用INSERT ... ONDUPLICATEKEYUPDATE语句,但正如注解中提到的,您需要在'Ticker'列上有一个唯一的索引。例如:
要做到这一点,只需修改表以包含一个唯一键: