Sqlite3'ten çekilen verinin tipi

Sqlite’tan çektiğim veri bir string olarak dönüyor. Formatını nasıl değiştirebilirim ? ya da veriyi python ile nasıl list haline döndürebilirim gelen veri örnekteki gibidir.

"[ ['a',10,20] , ['b',20,10] , ['c',30,0] ]"

SQLite’ta tasarim geregi datatipi yok.

Veriyi standart kutuphanedeki json modulu yardimiyla JSON olarak tutmani tavsiye ediyorum.

String’i listeye cevirmek de kotu bir huy olsa da mumkun; yakinda birileri yazar yontemini asagi.

import ast
liste = ast.literal_eval("[ ['a',10,20] , ['b',20,10] , ['c',30,0] ]")

eval'a kıyasla çok daha güvenli, tabii json da gayet iyi bir çözüm. Bu arada siz verilerinizi nasıl bir komutla insert ediyorsunuz? Normalde değer liste olarak geri döndürülür.

Söylediğiniz nasıl girildiyse öyle geri döndürür demenizle kontrol ettim ki ben veriyi girerken str’e çevirip atıyormuşum. Uzun süre monitöre bakmak aptal ediyor adamı bu arada önerileriniz için çok teşekkür ederim.

CREATE TABLE "Iron_Hand_KillBot" (
	"EventID"	INTEGER,
	"KillerProfile"	TEXT,
	"KillerEquipment"	TEXT,
	"VictimProfile"	TEXT,
	"VictimEquipment"	TEXT,
	"VictimInventory"	TEXT,
	"TotalKillFame"	INTEGER,
	"Participants"	TEXT
);

Böyle bir tablo oluşturdum ve bu hatayı alıyorum:

imlec.execute(“INSERT INTO ‘Iron_Hand_KillBot’ VALUES (?,?,?,?,?,?,?,?)”,data)
sqlite3.InterfaceError: Error binding parameter 1 - probably unsupported type.

edit:

data = (int(eventID),killer_profile,killer_equipment,victim_profile,victim_equipment,victim_inventory,int(tkf),nop)

Hatanızı çözdünüz mü bilmiyorum ama sanırım problem killer_profile değişkeninin TEXT’e çevrilememesinden kaynaklanıyor.

1 Beğeni

Sorunu bütün verileri db’ye yüklemeyerek çözdüm asıl problem eventID’nin numpy integer formatında olmasından kaynaklanıyormuş bir int çevirme işlemi sonrasında sadece eventID’nin db ye yüklemenin yeterli olacağını düşündüm sorun böylece çözüldü ve burada kullandığım fonksiyonun return fonksyonuna bir liste verip data’yı appenledim ve öyle kullandım sorduğunuz için teşekkür ederim yardımınız içinde ayrıca teşekkür ederim.