2010-09-10 17 views
6

Şu an bu fikri bir süredir oynuyordum ama bunu yapan insanlar hakkında herhangi bir bilgi görmedim. 1 nesneyi yüklemem ve değiştirmem gereken küçük bir web sitesi projem var. Bu nesne oldukça basit ve birkaç kb'den fazla olmamalı. Bu küçük miktarda veri için bir DB çalıştırmak yerine, neden bu verileri kaydetmek ve yüklemek için sadece pickle ve/veya shelve kullanın? Proje için Şişe veya Flask gibi bir mikro web çerçevesi kullanmayı planlıyorum.Python Pickle powered web sitesi oluşturmada bir sorun mu var?

Verileri yüklemek için bu yöntemi kullanmamanın herhangi bir nedeni var mı? Apache başlatıldığında sadece turşu dosyasını yükleyecektir, bu yüzden hızın etkileneceğini düşünmüyorum (bir db'yi sorgulamaktan daha hızlı).

Herhangi bir girdi için teşekkürler!

+0

Neden turşu kullanıyorsunuz? Neden basit bir metin değil? Neden Python nesne için kaynak kodu değil? Neden nesneyi toplamak için kendinizi sınırlayın? –

+1

SQLite gibi bir şey kullanmamanın herhangi bir sebebi var mı? –

+1

@ S.Lott Nesne, içinde bazı datetime nesneleri bulunan alt nesneler içeriyor. Gerekirse düz metin yapabilirim. Sitede bir miktar yeni veri eklemek için bir sayfa var, bu yüzden kaynağın kendisinde olamaz. Siteyi basit tutmaya çalışıyorum, ihtiyacım yoksa DB yok. –

cevap

3

Standart Python pickle veya shelve modülleri aracılığıyla nesne sürekliliğini uygulayamamanın bir nedeni yoktur. Sadece nesnelerinizin temiz ve güvenli bir şekilde seçilebildiğinden emin olun. Ölçeklenebilirlik, sitenizin şu andaki kapsamınızın ötesine geçtiğinde endişe haline gelebilir, ancak o zamana kadar fikriniz iyi çalışmalıdır. O gün gelirse, bir sonraki belirgin adım, Python'un dilin en son sürümleriyle önceden paketlenmiş olan mükemmel SQLitemodule'u kullanmayı düşünmektir.

+0

MongoDB gibi bir şey, Pickle'dan SQL'den daha kolay bir geçiş olacaktır. –

+0

Evet, onu almanın ve turşu ile koşmanın yanlış bir tarafı yok. Ve kim bilir, belki turşu probleminiz için yeterli olacaktır. Değilse, sorun olduğunda her zaman bir veritabanına geçebilirsiniz. Daha fazlasını talep edene kadar basit tutun. –

+0

@David MI, çok daha önce SQL ile çok çalıştı, ya da bir sorun olmaz, sadece daha fazla deneyim almak için MongoDB kullanmayı tercih ederim :) –

3

Doğrudan bir dosyaya turşulu bir dize yazmazdım. Endişelenecek çok fazla düşük seviyeli detay var. MySQL'de Python nesnelerini saklamakla ilgili Durus, ZODB veya this post from FriendFeed'a bakın.

İlişkisel veritabanlarını göz ardı etmeyin, ancak kutunun dışında bir sürü patlama (basit projeler için bile olsa) verir.

+0

Bağlantılar için teşekkürler. Eğer herhangi bir DB kullanacaksam, MongoDB olacak. Birden çok python işlemlerini çalıştıran ve bir şey değiştirildiyse aynı nesneye erişemeyen çerçevenin problemini düşünmedim. Bir çeşit bayrak tetiklemeli ve her işlem turşu dosyasını yeniden yüklemeli mi? "Endişe edilecek diğer düşük seviyeli detaylar" nedir? Teşekkürler! –

1

Halihazırda farkında olduğunuz eşzamanlılık sorunlarına ek olarak, dosyanın her zaman tutarlı durumda olduğundan emin olmalısınız. Örneğin, sunucu dosyayı yazmanın ortasında çökerse, ne olur? Bu rotaya giderseniz bir çözüm düşünmeniz ve uygulamanız gereken bir durumdur.

İlgili konular