self.im.execute("""INSERT INTO '{ }' VALUES ({},{},{})""".format(self.tablo_adı,birinci_sütun,ikinci_sütun_üçüncü_sütun))
sqlite3 ile çalışırken aklıma şu soru takıldı?
Kullanıcı, tablo adını ve sütun başlıklarını kendi girebilir mi diye uğraştım fakat yapamadım hata veriyor.Yani aynı anda hem tablo adını hemde sütun isimlerini giremiyorum.Nasıl yapabilirim?
Sizinle bir kod paylaşayım, bir inceleyin isterseniz, belki faydası dokunur.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
connect = __import__("sqlite3").connect("test.db")
cursor = connect.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS DATA(no)")
def add_column(column: str = ""):
cursor.execute(f"ALTER TABLE DATA ADD COLUMN {column}")
connect.commit()
def del_column(saved_columns: list = []):
cursor.execute(
f"CREATE TABLE IF NOT EXISTS SAVE({', '.join(saved_columns)})"
)
for i in cursor.execute(
f"SELECT {', '.join(saved_columns)} FROM DATA"
):
cursor.execute(
f"INSERT INTO SAVE VALUES"
f"({', '.join('?' * len(saved_columns))})", i
)
cursor.execute("DROP TABLE DATA")
cursor.execute("ALTER TABLE SAVE RENAME TO DATA")
connect.commit()
def add_data(*args):
no = 1 + len(list(cursor.execute("SELECT * FROM DATA")))
data = (no, *args)
cursor.execute(
f"INSERT INTO DATA VALUES({', '.join('?' * len(data))})", data
)
connect.commit()
def change_data(no: int = 1, select: str = "", new: str = ""):
cursor.execute(
f"UPDATE DATA SET {select} = ? WHERE no = ?", (new, no)
)
connect.commit()
def del_data(no: int = 1):
cursor.execute("DELETE FROM DATA WHERE no = ?", (no,))
for i, j in enumerate(list(cursor.execute("SELECT * FROM DATA"))):
cursor.execute(
f"UPDATE DATA SET no = {i + 1} WHERE no = {j[0]}"
)
connect.commit()
if __name__ == "__main__":
# Oluşturmak istediğiniz sütunun ismini yazın.
add_column("Sütun1")
# Silmek istediğiniz sütunu sütun listesine yazmayın.
# Bu durumda "Sütun-1" sütunu silinir.
del_column(["no"])
# İsmi "isim" ve "soyisim" olan iki adet yeni sütun oluşturalım.
add_column("isim")
add_column("soyisim")
# Sütunlara değerler ekleyelim.
add_data("Ayşe", "Saygılı")
add_data("Hasan", "Gümüş")
add_data("Lale", "Dizdar")
add_data("Murat", "Güneş")
# Eklediğimiz verilerden bazılarını değiştirelim.
change_data(1, "isim", "Fatma")
change_data(2, "soyisim", "Değirmenci")
# İkinci satırdaki veriyi silelim.
del_data(2)