同时向数据库添加条目会引发时间戳唯一性问题

时间:2016-09-12 16:40:43

标签: mysql database postgresql python-3.x

我有多个脚本将数据输入到同一个数据库中。我遇到的一个问题是,在走得太远之前,通常其中一个程序崩溃,原因是似乎存在重复的时间戳条目。

Message: '<class \'psycopg2.IntegrityError\'>: duplicate key value violates unique constraint "timestamp_key"\nDETAIL:  Key ("timestamp")=(2016-09-12 16:23:51.171562+00) already exists.\n'
Arguments: ()

基本上,这两个程序试图在同一时间进行输入。由于时间戳应该是唯一的,这会导致问题,并且脚本此时就会停止。

我想知道是否有办法同时执行此操作。是否有可能使时间戳更精确,因此它不太可能发生冲突?或者还有其他选择在这种情况下会更好吗?

1 个答案:

答案 0 :(得分:0)

准备重试:

dup_key_message = 'duplicate key value violates unique constraint'
while True:
    try:
        cursor.execute('insert into t (i) values (1)')
        break
    except psycopg2.IntegrityError as e:
        conn.rollback()
        print e
        if dup_key_message != e[0][0:len(dup_key_message)]:
            raise