Veritabanı okuma ve işleme sorunu

Herkese merhaba öncelikle aşağıdaki kodu her çalıştırdığımda veritabanı içerisine aynı değerleri ekliyor en baştan anlayamadım.


List=[]                            
for i in open('aktarmasız_hatlar.csv'):    
    x=i.rstrip()            
    List.append(x.split(';'))  

import sqlite3

con = sqlite3.connect("Aktarmasız_Hatlar.db")
cursor = con.cursor()

def tabloolustur():    

    cursor.execute("create table if not exists Aktarmasız_Hatlar (OriginDestination, Hat_durakları)")
    
def degerekle():
    
    k=len(List)
    for index in range(0, k):
        cursor.execute("insert into Aktarmasız_Hatlar (OriginDestination, Hat_durakları) values(?, ?)",
                   (List[index][0], List[index][1]) )
    con.commit()

tabloolustur()
degerekle()
 
con.close()

İkinci olarakta devamında gelen kod herhangi bir çıktı vermiyor.

def find_numbers_in_interval(array):
    if array[0]:
        start = array[2].index(array[1][0])
        end = array[2].index(array[1][1]) + 1
        return array[2][start: end]  
    def degerlerial():
            cursor.execute("SELECT * FROM Aktarmasız_Hatlar")
            deger = cursor.fetchall()
            for i in deger:    
                print(find_numbers_in_interval(deger))

    degerlerial() 

Aslında burada veritabanından değerleri çekmek yerine csv doyasını okuyup oluşturdugum llisteyi bu kodda çalıştırmaya çalıştım fakat şu hatayı aldım.

File “C:\Users\Asus\Desktop\Tez\python\atamayeni.py”, line 89, in
print(find_numbers_in_interval(List))

File “C:\Users\Asus\Desktop\Tez\python\atamayeni.py”, line 86, in find_numbers_in_interval
start = array[2].index(array[1][0])

ValueError: ‘[1, 2]’ is not in list

Eklemeye çalıştığım liste ise şu şekilde.

image

Sorum tamamen değişti. Yeniden oluşturduğum kod aşağıdaki şekilde. Ama csv dosyasındaki bütün bilgileri Hat sütununa yazıyor. Diğer 2 sütun boş kalıyor. .csv dosyamı buraya yükleyemiyorum ama ekran görüntüsünü koyuyorum.

import sqlite3

veritabani = sqlite3.connect("veritabanim.db")
cursor = veritabani.cursor()

cursor.execute("create table if not exists Aktarmasiz_Hatlar (Hat, OriginDestination, HatDuraklari)")

import pandas as pd

veri = pd.read_csv("yenideneme.csv")
df = pd.DataFrame(veri)

Hat = df['Hat']
OriginDestination = df['OriginDestination']
HatDuraklari = df['HatDuraklari']

k = len(veri)

for index in range(0,k):
    cursor.execute("insert into AKtarmasiz_Hatlar values(?, ?, ?)",
                   (Hat[index], OriginDestination[index], HatDuraklari[index]) )
    veritabani.commit()


cursor.close()

image

Yazamaz, 3 sutunlu bir INSERT kullaniliyor.

→ Tablo datasini gormemiz lazim.

Diger sutunlara istenmeyen degerler mi yaziliyor?

OriginDestination ve HatDuraklari degiskenlerinin iceriklerini gormemiz lazim.

Ekran goruntusu CSV dosyasinin iceriginden cok onu acmayi becerememis bir programin ekran goruntusu gibi duruyor.

→ CSV dosyasini gormemiz lazim.

Bir text editor ile acip buraya yapistirabilirsin ilk birkac satiri.

Öncelikle cevabınız için teşekkürler. İstedikleriniz bunlar sanırım.

ve .csv içeriği

Hat,OriginDestination,HatDuraklari
Aktarmasiz,“1,2”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,2”,“1,2,5,4,6,8,10,14,13”
Aktarmasiz,“1,3”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,4”,“1,2,5,4,6,8,10,14,13”
Aktarmasiz,“1,5”,“1,2,5,4,6,8,10,14,13”
Aktarmasiz,“1,6”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,6”,“1,2,5,4,6,8,10,14,13”
Aktarmasiz,“1,8”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,8”,“1,2,5,4,6,8,10,14,13”
Aktarmasiz,“1,10”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,10”,“1,2,5,4,6,8,10,14,13”
Aktarmasiz,“1,11”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,12”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,13”,“1,2,5,4,6,8,10,14,13”

Dosya okunamamis.

Aktarmasiz kismini " arasina alinca duzeliyor mu?

"Aktarmariz","1,2","1,2,3"

seklinde.

Yok hayır düzelmiyor yine aynı sonuç veriyor :frowning:

Ilk satira da koysak? "Hat","OriginDestination","HatDuraklari" ?

Onuda denedim oda olmadı napcağımı bilemiyorum valla artık

Sorun verileri sakladığınız programdan (Excel heralde o görünen) kaynaklanıyor. Hepsini “A” sütununa tıkmış dolayısıyla pandas ayırt edemiyor. Şöyle yapablirsiniz: verileri

Hat,OriginDestination,HatDuraklari
Aktarmasiz,“1,2”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,2”,“1,2,5,4,6,8,10,14,13”
Aktarmasiz,“1,3”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,4”,“1,2,5,4,6,8,10,14,13”
Aktarmasiz,“1,5”,“1,2,5,4,6,8,10,14,13”
Aktarmasiz,“1,6”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,6”,“1,2,5,4,6,8,10,14,13”
Aktarmasiz,“1,8”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,8”,“1,2,5,4,6,8,10,14,13”
Aktarmasiz,“1,10”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,10”,“1,2,5,4,6,8,10,14,13”
Aktarmasiz,“1,11”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,12”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,13”,“1,2,5,4,6,8,10,14,13”

bir text editörünü açıp içerisine yapıştırıp yenideneme.csv (veya ne isim isterseniz) şeklinde kaydedip sonrasında yukarıdaki programınızı çalıştırırsanız istediğiniz gibi çalışabilir

1 Beğeni

Burada ki tırnaklar, dosya kod görünümünde verilmediği için değişmiş, bu şekilde çalışmayabilir.

Şu şekilde düzeltirseniz, belki sorununuzu çözebilirsiniz (ve tabi @anon18277073 dediği gibi bir text editor kullanın):

Hat,OriginDestination,HatDuraklari
Aktarmasiz,"1,2","1,2,3,6,8,10,11,12"
Aktarmasiz,"1,2","1,2,5,4,6,8,10,14,13"
Aktarmasiz,"1,3","1,2,3,6,8,10,11,12"
Aktarmasiz,"1,4","1,2,5,4,6,8,10,14,13"
Aktarmasiz,"1,5","1,2,5,4,6,8,10,14,13"
Aktarmasiz,"1,6","1,2,3,6,8,10,11,12"
Aktarmasiz,"1,6","1,2,5,4,6,8,10,14,13"
Aktarmasiz,"1,8","1,2,3,6,8,10,11,12"
Aktarmasiz,"1,8","1,2,5,4,6,8,10,14,13"
Aktarmasiz,"1,10","1,2,3,6,8,10,11,12"
Aktarmasiz,"1,10","1,2,5,4,6,8,10,14,13"
Aktarmasiz,"1,11","1,2,3,6,8,10,11,12"
Aktarmasiz,"1,12","1,2,3,6,8,10,11,12"
Aktarmasiz,"1,13","1,2,5,4,6,8,10,14,13"

Ayrıca programı denedim ve bir sorunla karşılaşmadım. Verileri, başarılı bir şekilde CSV’den SQLite’ta aktarıyor.

2 Beğeni

Evet csv dosyamda sıkıntı varmış dediğiniz gibi yaptığımda halloldu şuan çalışıyor çok teşekkür ederim :slight_smile: :slight_smile:

Sizede çok teşekkür ederim buraya yapıştırdığımda tırnak işaretleri öyle görünmüş normalde bende düzgün görünüyor. Şu sizin yazdığınız kırmızı şekilde yazmayı ben bilmiyorum

Sadece kodu şu şekilde yazmalısınız:

```
Hat,OriginDestination,HatDuraklari
Aktarmasiz,“1,2”,“1,2,3,6,8,10,11,12”
Aktarmasiz,“1,2”,“1,2,5,4,6,8,10,14,13”
Aktarmasiz,“1,3”,“1,2,3,6,8,10,11,12”
```

 |
V

Hat,OriginDestination,HatDuraklari
Aktarmasiz,"1,2","1,2,3,6,8,10,11,12"
Aktarmasiz,"1,2","1,2,5,4,6,8,10,14,13"
Aktarmasiz,"1,3","1,2,3,6,8,10,11,12"

1 Beğeni

Anladımm, teşekkür ederim :):slight_smile: