'u ekleyip yoksayın ve SQLite docs'u okudum, Stack Overflow üzerinde çeşitli soru ve cevapları ve this thing'u okudum, ancak tam bir cevaba gelmedim.SQLite, orijinal _rowid_
ben SQLite ile INSERT OR IGNORE INTO foo VALUES(...)
böyle bir şey yapmak ve orijinal satırın satır kimliğini geri almak için bir yolu yoktur biliyoruz ve buna en yakın INSERT OR REPLACE
olacağını ama bu tüm satırı siler ve yeni bir satır ekler ve Böylece yeni bir satırbaşı alır.
Örnek tablo:
sql = sqlite3.connect(":memory:")
# create database
sql.execute("INSERT OR IGNORE INTO foo(data) VALUES(?);", ("Some text.",))
the_id_of_the_row = None
for row in sql.execute("SELECT id FROM foo WHERE data = ?", ("Some text.",)):
the_id_of_the_row = row[0]
Ama ideal bir şey gibi görünecektir:: Şu anda
CREATE TABLE foo(
id INTEGER PRIMARY KEY AUTOINCREMENT,
data TEXT
);
Yapabileceğim en iyisi nedir
the_id_of_the_row = sql.execute("INSERT OR IGNORE foo(data) VALUES(?)", ("Some text",)).lastrowid
(okuyun: En verimli) bir tabloya bir satır eklemek ve rowid döndürmek ya da i t zaten var ve sadece rowid olsun? Verimlilik önemlidir, çünkü bu oldukça sık gerçekleşecektir.
INSERT OR IGNORE
bir yolu var mı ve göz ardı satır karşılaştırıldı o satırın satır kimliğini döndürür? Bu, bir kesici uç kadar verimli olacağı için harika olurdu. Kaydın kimliğini umursamadığınız durumlar içindir;
"UPDATE ... WHERE ..." yi denediniz mi? – Keith