Python:插入前更新/删除

时间:2015-12-08 22:12:25

标签: python mysql python-2.7

每次我执行我的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

每次重复。每次我执行它都会增加越来越多的行。所以我需要摆脱这种重复。

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)