2014-06-06 19 views

回答

1

不要這樣做,即CSV。

許多其他可能性,比如sqlite數據庫,蟒蛇shelve等標準庫中可用的選項進行了總結here

鑑於您的應用程序是一個Web應用程序,您需要考慮解決方案的併發性影響以確保數據的完整性。你也可以考慮一個更強大的數據庫,比如有很多python庫的postgres。

3

只是不這樣做。

與CSV問題是...

一個,併發不可能:這意味着,當兩個人在同一時間訪問您的應用程序,也沒有辦法,以確保他們不」互相干擾,互相改變數據。使用CSV文件作爲後端時無法解決此問題。

b,速度:每當您對CSV文件進行更改時,都需要重新載入或多或少的整個文件。解析文件消耗了內存和時間。

數據庫是爲了解決這個問題。

但是我同意你不需要爲小應用程序學習SQLAlchemy。

您應該考慮輕量級替代品。

您在尋找的是ORM - 對象關係映射 - 誰將Python代碼轉換爲SQL併爲您管理SQL數據庫。

PeeweeORMPonyORM。兩者都易於使用,並將所有SQL翻譯成Python,反之亦然。兩者都是免費供個人使用的,但如果您將Pony用於商業目的,則需要花錢。我強烈推薦PeeweeORM。您可以開始使用SQLite作爲Peewee的後端,或者如果您的應用程序變得更大,則可以輕鬆插入MySQL或PostGreSQL。

0

我認爲只要你從中抽象出來就沒有問題。即確保你在你寫的內容和你如何實現我之間有一個清晰的分隔。這會讓代碼膨脹一點,但它會確保您可以在幾天內交換CSV存儲。

I.e.假裝你可以保存你的數據,就好像你將它保存在內存中一樣。不要在你的應用程序中寫入「openCSVFile」。使用initPersistence()。不要寫「csvFile.appendRecord()」。使用「persister.saveNewReport()」。如果你真的認識到CSV是一個瓶頸,你可以寫一個新的persister插件。

還有一些額外的好處,比如你不必在測試中使用模擬庫來提高速度。你只是提供另一個持卡人。

相關問題