【发布时间】:2012-09-02 13:50:59
【问题描述】:
仅当三列(名称、价格和新价格)与相同数据匹配时,我才想删除重复数据。但在另一个 python 脚本中。
所以数据可以插入到数据库中,但是使用其他 python 脚本,我想通过 cron 作业删除这些重复数据。
所以在这种情况下:
cur.execute("INSERT INTO cars VALUES(8,'Hummer',41400, 49747)")
cur.execute("INSERT INTO cars VALUES(9,'Volkswagen',21600, 36456)")
是重复的。插入数据的示例脚本:
import psycopg2
import sys
con = None
try:
con = psycopg2.connect(database='testdb', user='janbodnar')
cur = con.cursor()
cur.execute("CREATE TABLE cars(id INT PRIMARY KEY, name VARCHAR(20), price INT, new price INT)")
cur.execute("INSERT INTO cars VALUES(1,'Audi',52642, 98484)")
cur.execute("INSERT INTO cars VALUES(2,'Mercedes',57127, 874897)")
cur.execute("INSERT INTO cars VALUES(3,'Skoda',9000, 439788)")
cur.execute("INSERT INTO cars VALUES(4,'Volvo',29000, 743878)")
cur.execute("INSERT INTO cars VALUES(5,'Bentley',350000, 434684)")
cur.execute("INSERT INTO cars VALUES(6,'Citroen',21000, 43874)")
cur.execute("INSERT INTO cars VALUES(7,'Hummer',41400, 49747)")
cur.execute("INSERT INTO cars VALUES(8,'Hummer',41400, 49747)")
cur.execute("INSERT INTO cars VALUES(9,'Volkswagen',21600, 36456)")
cur.execute("INSERT INTO cars VALUES(10,'Volkswagen',21600, 36456)")
con.commit()
except psycopg2.DatabaseError, e:
if con:
con.rollback()
print 'Error %s' % e
sys.exit(1
finally:
if con:
con.close()
【问题讨论】:
-
澄清:您想识别重复的行,并删除重复的数据?
-
“与相同数据匹配的树表”到底是什么意思?您的意思是“三个列匹配相同的数据”吗?
-
@a_horse_with_no_name:我已经读过它,当然提供的示例插入只显示列。编辑问题以改进语法、拼写和错误。
标签: python database postgresql