2012-11-08 37 views
2

我正在創建一個簡單的python程序,它需要搜索一個有點大的數據庫(大約40張表,6百萬行左右)。python程序的大中型可移植數據庫選項

目前,我使用MySQLdb查詢我的本地MySQL數據庫,然後我有一些其他的Python函數與數據一起工作,並返回一些統計數據和其他東西。我想與其他不想構建自己的數據庫的人分享。此時數據庫僅用於查詢。

如何最好地將數據庫和Python程序作爲「包」共享。我必須放棄SQL方法並切換到某種文本文件數據庫,或者有更簡單的方法... sqlite可能嗎?

如果答案是sqlite我該如何去導出我當前的SQL數據庫到sqlite數據庫?有什麼我應該知道的陷阱嗎?

目前我使用簡單的SELECT採石場和幾個WHERE語句來定位我需要的數據。我擔心,如果我切換到基於文本的數據庫,我最終不得不編寫大量的代碼來完成這些查詢。

非常感謝您的任何建議。

編輯

所以我寫了我的小Python程序與數據庫sqlite3的,它完美的作品。

我結束了使用所謂mysql2sqlite.sh shell腳本發現here轉換我的MySQL數據庫SQLite的來使用。它工作完美無瑕。

我只需要更改2行python代碼。真棒。

我的小程序在osx,windows和linux(ubuntu和redhat)上運行,沒有任何改變或麻煩。感謝您的建議!

+0

所以主要賣點是軟件和數據的捆綁?如果是這樣,我會建議SQLite3。它包含在Standard-Python發行版中,並且使用簡單的SQL語句,您甚至不必更改現有的SQL-querries。 –

+0

是的,我想要的軟件和數據捆綁! SQLite3聽起來像一個很好的選擇,如果我不需要重大改變我的SQL代碼。你有建議/創建/導出可共享的SQLite3數據庫嗎? – Keith

+0

我會使用[SQLAlchemy](http://www.sqlalchemy.org/)作爲數據庫抽象層,然後針對多個數據庫後端(包括用於嵌入式案例的SQLite)是微不足道的。 –

回答

1

根據數據庫的複雜性,轉換數據庫可能非常容易,如sql-dump然後導入。有關策略和備選方案,請參見此post