每次我执行我的python(sql)代码时,它都会不断向我的表中添加越来越多的数据,越来越多的行只会不断增长,不知怎的,我需要在将数据插入表之前更新或删除,但是我不知道怎么做。
这是我的代码:
import MySQLdb
from calculationmethod import Method
class dbcclib(Method):
def __str__(self):
"""Return a string representation of the object."""
return "Density matrix of" % (self.data)
def __repr__(self):
"""Return a representation of the object."""
return 'Density matrix("%s")' % (self.data)
def push(self):
# Open database connection
dbhost1 = raw_input("Enter databse host: ")
dbport = int(raw_input("Enter databse port: "))
dbuser = raw_input("Enter dabase user: ")
dbpass = raw_input("Enter databse password: ")
dbname = raw_input("Enter database: ")
db = MySQLdb.connect(host = dbhost1,port = dbport,user = dbuser,passwd = dbpass , db = dbname)
# prepare a cursor object using cursor() method
cur = db.cursor()
# Create table as per requirement
self.data.vibstate
cur.executemany("""
INSERT INTO
cord
(x, y, z)
VALUES
(%s, %s, %s)
""", self.data.vibstate)
db.commit()
# disconnect from server
db.close()
print "Baigta"
我现在将定义我的“MESS”,在这个例子中我有2D数组让我们这样说:
a = [[1,2,3],[3,2,1]]
然后我就把它插入我的表中几次:它看起来像那样:
columns x y z
1 2 3
3 2 1
1 2 3
3 2 1
每次重复。每次我执行它都会增加越来越多的行。所以我需要摆脱这种重复。
答案 0 :(得分:1)
如果您需要删除重复数据,则应使用PK和UPSERT(如果不存在则插入,否则更新)。如果每次都需要干净的数据库,只需在插入之前运行 truncate 命令。 在Mysql中使用以下结构:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
选中此link
如果您不想修改,只需要删除重复的用户INSERT IGNORE。
INSERT IGNORE INTO table (a,b,c) VALUES (1,2,3);
请记住为所有3个字段创建唯一约束。
ALTER TABLE table ADD UNIQUE INDEX unq (a, b, c)