如何避免插入重复数据?我只想插入尚不存在的数据。我写了以下查询,但它没有正常工作。我正在使用PostgreSQL
。
title_exits = cursor.execute ("SELECT title,pageid FROM movie_movie WHERE title = %s AND pageid = %s;",(title,pageid))
if title_exits == 0:
cursor.execute("INSERT INTO movie_movie (title,pageid,slug,language) values (%s,%s,%s,%s);",(title,pageid,slug,id))
db.commit()
更新:我试过了result = cursor.fetchone ("SELECT count(*) FROM movie_movie WHERE title = %s AND pageid = %s;",(title,pageid))
。但我收到错误消息。 TypeError: fetchone() takes not arugments (2 given).
答案 0 :(得分:0)
尝试将标题字段定义为唯一(必须定义为varchar(constant_length))。然后尝试在标题存在的情况下将标题插入数据库,db return error else将插入
答案 1 :(得分:0)
正如我怀疑(和@tony指出)cursor.execute没有返回行数。它始终返回None
。
答案 2 :(得分:0)
与您的更新相关的答案:
您应该使用“%”符号代替逗号:
result = cursor.fetchone ("SELECT count(*) FROM movie_movie WHERE title = %s AND pageid = %s;" % (title,pageid))
<强>更新强>
正如@no_freedom在评论中所说,认为更好的方法将是
result = cursor.fetchone ("SELECT count(*) FROM movie_movie WHERE title = :1 AND pageid = :2", [title,pageid])
但我不确定,只是尝试一下。