我正在尝试将值添加到“待处理的应用程序表”中。这就是我到目前为止所做的:
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
);
答案 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)