Python sqlite3生成唯一标识符

时间:2016-10-21 10:25:57

标签: python sqlite

我正在尝试将值添加到“待处理的应用程序表”中。这就是我到目前为止所做的:

    appdata = [(ID,UNIQUE_IDENTIFIER,(time.strftime("%d/%m/%Y"),self.amount_input.get(),self.why_input.get())]

    self.c.execute('INSERT into Pending VALUES (?,?,?,?,?)', appdata)
    self.conn.commit()

我需要为'UNIQUE_IDENTIFIER'设置一个值,这是sqlite数据库中的主键。

如何为此值生成一个unquie编号?

CREATE TABLE Pending (
    ID          STRING REFERENCES StaffTable (ID),
    PendindID   STRING PRIMARY KEY,
    RequestDate STRING,
    Amount      TEXT,
    Reason      TEXT
);

1 个答案:

答案 0 :(得分:0)

有两种方法:

<强> 1-第一

在python中你可以使用uuid模块示例:

>>> import uuid
>>> str(uuid.uuid4()).replace('-','')
'5f202bf198e24242b6a11a569fd7f028'

注意 :获得相同str的几率很小,因此在保存 之前检查表中是否存在具有相同主键的对象/ p>

此方法uuid.uuid4()每次都返回新的随机

例如:

>>> ID=str(uuid.uuid4()).replace('-','')
>>>cursor.execute("SELECT * FROM Pending WHERE PendindID = ?", (ID,))
>>>if len(data)==0:
      #then save new object as there is no row with the same id
   else:
       #create new ID

<强> 2秒

sqlite3中的

根据sqlite doc

制作复合主键
CREATE TABLE Pending (
  column1, 
  column2, 
  column3, 
  PRIMARY KEY (column1, column2)
);

然后确保唯一性抛出unique(column1, column2)