Veritabanı arama

veritabanında arama yapıyorum arama sonucunda eşleşen bilgilerin id değerini nasıl alabilirim

select id from (tabloadı) where (kullanıcı adı sütunu)=(id sini almak istediğin kullanıcı)

Sqlite’de kendiniz bir id girmediyseniz bile rowid sütunundaki id’lere erişebiliyorsunuz.

Aramayi ve semayi (tablo tanimlarini) gormeden bilemeyiz.

Ornek data veya arama sonucu da lazim olabilir.

self.cursor.execute(“SELECT * FROM bilgiler WHERE adı=? or soyadı=? or cepi=? or adresi=?”,(ara,ara,ara,ara))
veriler = self.cursor.fetchall()
print(veriler)
print(len(veriler))
veriler içine atılan kişilerin kayıtlı olduğu id alarak düzeltme yapmak istiyorum

Peki “id degeri” dedigin nedir?

elf.cursor.execute(’’‘CREATE TABLE IF NOT EXISTS
bilgiler(id INTEGER PRIMARY KEY autoincrement, adı TEXT, soyadı TEXT, cepi TEXT, adresi TEXT)’’’)
tabloda otomatik verilen sayı

O zaman cursor’dan fetchall ile donen listenin elemanlarinin ilk elemani id?

self.cursor.execute("SELECT * FROM bilgiler WHERE adı=? or soyadı=? or cepi=? or adresi=?", (ara,ara,ara,ara))
veriler = self.cursor.fetchall()

for row in veriler:
    row_id = row[0]
    self.cursor.execute("UPDATE bilgiler SET cepi = cepi || '!' WHERE id = ?", (row_id,))
1 Beğeni

Dediğim gibi rowid de kullanabilirsiniz, aksi belirtilmedikçe sqlite bu sütunu kendi ekliyor zaten:

import sqlite3 as sql

connection = sql.connect("veri.db3")

cursor = connection.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS kisiler (ad, soyad)")

cursor.execute("INSERT INTO kisiler VALUES (?, ?)", ("hede", "hedede"))
cursor.execute("INSERT INTO kisiler VALUES (?, ?)", ("ahmet", "şen"))

print("İsmi ahmet olan kişinin id'si:", cursor.execute("SELECT rowid FROM kisiler WHERE ad == ?", ("ahmet", )).fetchone())

cursor.execute("UPDATE kisiler SET ad == ? WHERE rowid == 2", ("onur", ))
print("id'si 2 olan kişinin ismi:", cursor.execute("SELECT ad FROM kisiler WHERE rowid == 2").fetchone())


connection.commit()

cursor.close()
connection.close()