第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

蟒蛇SQLite3 auto_increment適當(dāng)增加,即使刪除最大ID

蟒蛇SQLite3 auto_increment適當(dāng)增加,即使刪除最大ID

慕田峪4524236 2022-09-27 09:28:39
我開始在python中使用SQL數(shù)據(jù)庫,并且我希望有多個(gè)表,我可以在其中按ID引用彼此表中的行。因此,我使用的是“testID 整數(shù)主鍵”列。列的值會(huì)根據(jù)需要增加,但是如果我刪除具有最大 ID 的行,然后添加另一個(gè)條目,它將接收之前已設(shè)置的 ID。這很有用,因?yàn)閯h除最新的行會(huì)導(dǎo)致列中的最大ID降低,這對我來說很有意義。我現(xiàn)在想知道,有沒有辦法讓數(shù)據(jù)庫記住之前設(shè)置的每個(gè)ID,而不是設(shè)置相同的ID兩次,即使從數(shù)據(jù)庫中刪除最大ID?MWE也許可以更清楚地說明這一點(diǎn):conn = sqlite3.connect("db_problem.db")c = conn.cursor()with conn:    c.execute("CREATE TABLE test ("              "testID integer PRIMARY KEY, "              "col1 integer)")    c.execute("INSERT INTO test (col1) VALUES (1)")    c.execute("INSERT INTO test (col1) VALUES (2)")    c.execute("DELETE FROM test WHERE col1 LIKE 1")    c.execute("SELECT testID FROM test WHERE col1 LIKE 2")    print(c.fetchall()) # this stays 2, even tho there is only one row left, which works fine    c.execute("INSERT INTO test (col1) VALUES (3)")    c.execute("DELETE FROM test WHERE col1 LIKE 3")    c.execute("INSERT INTO test (col1) VALUES (4)")    c.execute("SELECT testID FROM test WHERE col1 LIKE 4")    print(c.fetchall()) # Here the autoincrement was set to 3 although it is the fourth entry made
查看完整描述

1 回答

?
慕慕森

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊

從 SQLite 自動(dòng)增量

如果“自動(dòng)增量”關(guān)鍵字出現(xiàn)在“整數(shù)主鍵”之后,則會(huì)更改自動(dòng) ROWID 賦值算法,以防止在數(shù)據(jù)庫的生存期內(nèi)重用 ROWID。換句話說,自動(dòng)增量的目的是防止從以前刪除的行中重用 ROWID。

因此,使用以下語句創(chuàng)建表:

c.execute("CREATE TABLE test ("
          "testID integer PRIMARY KEY AUTOINCREMENT , "
          "col1 integer)")

但是文檔中還有另一部分您必須考慮:

自動(dòng)增量關(guān)鍵字會(huì)施加額外的 CPU、內(nèi)存、磁盤空間和磁盤 I/O 開銷,如果不是嚴(yán)格需要,則應(yīng)避免使用。

選擇權(quán)在您手中。


查看完整回答
反對 回復(fù) 2022-09-27
  • 1 回答
  • 0 關(guān)注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號