如果值不存在,是否将值插入mysql表?

ccrfmcuu  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(320)

我希望使用python将嵌套列表插入mysql表。我想为新的id值插入新行,并为那些具有现有id值的列更新某些列。但是,对于其中一个嵌套列表(fruits,s[2]),我只想在mysql表中更新那些记录为空的行!我意识到我提出的查询只适用于插入新的id号,而不涉及更新现有行。那就是我需要帮助的地方!

s = [[1, 20, 21],[1999, 1998, 1990], ['Apple', 'Pear', 'Bannana']

id = s[0] 
yearborn = s[1] 
favfruit = s[2]

query = '''INSERT INTO table (PersonID, Year, Fruit) 
           VALUES (%s, %s, %s)'''

cursor.executemany(query, s)
pod7payv

pod7payv1#

我想为新的id值插入新行,并为那些具有现有id值的列更新某些列。
在mysql中,可以使用 insert ... on duplicate key 语法和一些条件逻辑 updatefruit 如果最初是 null :

insert into table (personid, year, fruit) 
values (%s, %s, %s)
on duplicate key update 
    year = values(year), 
   fruit = coalesce(fruit, values(fruit));

为此,需要对列设置唯一(或主键)约束 personid .

相关问题