2012-08-08 38 views
3

我正在尋找可以訪問MySQL和PostgreSQL的純Python SQL庫。與PostgreSQL和MySQL一起使用的純python SQL解決方案?

唯一的要求是在Python 2.5+上運行並且是純python,所以它可以包含在腳本中,並且仍然可以在大多數平臺上運行(不安裝)。

事實上,我正在尋找一個簡單的解決方案,可以讓我編寫SQL並將結果導出爲CSV文件。

+0

我處於類似的情況,我想知道你是否正在做bluehost,是這種情況嗎? – 2016-05-11 17:31:38

回答

1

您是否在尋找一個ORM或單個庫,它們可以讓您直接編寫SQL語句並轉換哪裏存在差異?

我不確定psycopg2是不是純python,但它肯定具有綁定並適用於所有平臺。您仍然必須至少安裝psycopg2來與PostgreSQL數據庫進行通信,因爲Python(據我所知)本身不附帶。

從那裏,你想要的任何額外的ORM庫也需要安裝,但大多數都是純python在他們使用的任何後端之上。 Django可能是你的需求的框架(對於我的),但它是一個非常流行的框架,SQLAlchemy是一個試用版本和真正的系統 - 有點笨重,特別是如果你必須處理遺傳(在我看來)。我聽說風暴是好的,但我沒有太多的測試,所以我不能完全說。

如果您正在尋找混合搭配(MySQL中的某些表格和PostgreSQL中的某些表格)與可能是MySQL或PostgreSQL的單個數據庫,我一直在研究一種名爲ORB的ORM,它更側重於面向對象的設計,並允許多個數據庫和數據庫之間的關係。現在它只支持PostgreSQL和Mongo,只是因爲我不需要MySQL,但我會爲寫這個後端而起身。

A)這是絕對有可能的:該代碼可在http://docs.projexsoftware.com/api/orb

3

兩個部分的回答中找到。

B)根據您的確切關切,純python可能會或可能不會成爲解決您的問題的好方法。

解釋:

SqlAlchemy庫帶有兩個組成部分:比較流行的「ORM」和「核心」,它位於的頂部。任何一個都可以讓你用SqlAlchemy格式(這只是Python)編寫你的SQL命令; SqlAlchemy然後將語句編譯爲Mysql或PostgreSQL並連接到適當的數據庫。

SqlAlchemy是一個偉大的圖書館,我推薦它的一切。雖然您必須以自己的格式編寫語句,但您可以隨時輕鬆地選擇 - 並且可以切換到幾乎所有您需要的基礎數據庫庫。無論您是否需要支持多個後端,它都是在任何數據庫項目中使用的完美平臺。

SQLAlchemy的談判,以通過標準DBAPI驅動程序的數據庫,並且不支持多個選項的純Python,特別是pymysqlpypostgresql驅動程序(http://docs.sqlalchemy.org/en/latest/core/engines.html#supported-dbapis

至於寫作CSV,標準庫中有你覆蓋。

import csv 

因此,該警告?

以下可能會或可能不會適用於您的情況:

大部分在Python宇宙更高級別的DB模塊仍然推薦的mysql-Python和psycopg - 這兩者都是沒有純Python和編譯/鏈接/根據安裝的數據庫進行配置這很大程度上似乎來自API /集成問題的混合,以及在CPython下運行時各種純Python包與c擴展相比的速度。

有像我推薦的純python驅動程序,但大多數評論者聲明他們主要是實驗性的。 pymysql作者聲稱穩定性和生產準備就緒,一些博客開發者對此提出了挑戰。至於「穩定」或「實驗性」的含義,則因項目而異。有些API有變化,其他則不完整,有些則是越野車。

你需要確保你可以找到每個支持你所需的確切操作的系統的純Python驅動程序。這可能很簡單,或者這可能是混亂的。無論你使用SqlAlchemy還是其他的東西,當你選擇一個DBAPI驅動程序時,你仍然會面臨這個問題。

PyPy項目(純python python解釋器)有一個wiki列出了各種軟件包的兼容性:https://bitbucket.org/pypy/compatibility/wiki/Home我希望他們能夠獲得特定的驅動程序建議。如果PyPy是您的預期平臺,那麼SqlAlchemy也可以完美運行。

+0

我會接受你的答案,如果你擦亮一點;)使用SqlAlchemy + pure python驅動程序的mysql和postgresql工作得很好。請記住,這是關於腳本的:導入,導出和維護,其中db-driver性能無關緊要。 – sorin 2014-04-17 08:44:07

1

使用SQL-Alchemy。它可以處理大多數數據庫類型,並且肯定可以與postgres和MySQL一起工作。

相關問題