Python sqlite3生成唯一标识符



我正试图将值添加到'未决应用程序表'。这是我目前所看到的:

    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数据库中的主键。

如何为该值生成唯一的数字?

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

两个方法:

1

在python中可以使用uuid模块,例如:

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

注意:获得相同str的可能性很小,因此在保存

之前检查表中是否存在具有相同主键的对象。

此方法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)

最新更新