SSS: Dosyaya nasıl veri kaydedebilirim?

Elimdeki degiskenleri bir dosyaya kaydetmek, daha sonra okumak istiyorum. Ne yapmaliyim? Database mi kullanmaliyim?

2 Beğeni

Verileri basit objeler haline getirirseniz pickle veya json kullanabilirsiniz:

import json
import pickle

## Veri:

insanlar = ["ahmet", "mehmet"]
sayilar = [42, 43]
bir_takim_tablo = [
	{
		'sayi': 3,
		'yazi': "foo",
		'guzel': False,
	}, {
		'sayi': 4,
		'yazi': "bar",
		'guzel': True,
	}
]

## Yazma:

veri_seti = { 'insanlar': insanlar, 'sayilar': sayilar,
    'tablo': bir_takim_tablo }

with open("veri.pickle", 'wb') as f:
	pickle.dump(veri_seti, f)

with open("veri.json", 'w', encoding='utf-8') as f:
	json.dump(veri_seti, f)

## Okuma:

with open("veri.pickle", 'rb') as f:
	okunan_veri = pickle.load(f)
	sayilar = okunan_veri['sayilar']
	print(sayilar)
	# [42, 43]


with open("veri.json", 'r', encoding='utf-8') as f:
	okunan_veri = json.load(f)
	okunan_tablo = okunan_veri['tablo']
	print(okunan_tablo[0]['guzel'], okunan_tablo[1]['guzel'])
	# False True
1 Beğeni

Peki veritabani?

Baska bir cevaptan alinti yapacagim:

Isinizi goruyorsa pickle, JSON, text dosyasi kullanabilirsiniz. Buradaki cogu insan SQL ogrenmek, pratik yapmak, ise girerken “HedeSQL kullandim” diyebilmek icin kullaniyor.

Sunlar RDBMS kullanmak icin iyi sebep:

  • Veri hafizaya sigmiyor
  • Veriyi uzakta veya baska makinada tutmak istiyoruz
  • Verinin semasi (sekli) belli, sapmak istemiyoruz
  • Verinin kontrollere ihtiyaci var, bunlari koda yazmak istemiyoruz
  • Verinin (kontroller gibi) basit koda ihtiyaci var, her aplikasyona eklemek istemiyoruz
  • Veri uzerinde basit olmayan sorgular yapmak istiyoruz
  • Veri uzerinde O(n)'den hizli calisan (index’li) sorgular yapmak istiyoruz
  • Veri uzerinde kilitler tutmak veya parcalanamayan isler (transaction) yapmak istiyoruz
  • Verinin bozulmasini istemiyoruz, dosya sisteminin detaylarini ve garantilerini bilen muhendisimiz yok

Dahasi icin herhangi bir database sisteminin sagladiklari okunabilir. (ACID iyi bir baslangic noktasi.)

Surada da ilgili seyler var ama ayiklamak gerekebilir: Neden MySQL kullanmamaliyim? Yerine ne kullanabilirim? [PostgreSQL]