2014-05-08 31 views
2

在Perl中,DBI模塊是與DB進行交互的標準方式,其中每個數據庫供應商都提供了DBI使用的其自己的DBD模塊。 (它有點類似於JDBC。)我無法弄清楚Python中是否存在類似的模型。在Postgres的情況下,我看到有pg和pgdb模塊,其中pgdb遵循DB-API 2.0,而pg沒有。我應該關心這個嗎?如果我使用pgdb,我應該期望從DB-API 2.0之後的MySQL db模塊獲得相同的接口嗎?來自perl的python,我想知道是否有像Python的DBI的東西?

謝謝!

+3

是的,[DB-API 2.0](http://legacy.python.org/dev/peps/pep-0249/)絕對是低層數據庫訪問的方式,實現它的模塊的確是應該實現相同的接口。對於抽象更高級別抽象API的API,請查看[SQLAlchemy](http://www.sqlalchemy.org/)。它還提供了ORM功能,但是[核心](http://docs.sqlalchemy.org/en/rel_0_9/#sqlalchemy-core)可用於編寫對任何特定RDBMS都不可知的代碼。 –

+0

另請參閱SQLAlchemy關於[數據庫URL](http://docs.sqlalchemy.org/en/rel_0_9/core/engines.html#database-urls)的文檔以及[PostgreSQL](http:// docs.sqlalchemy。 org/en/rel_0_9/dialects/postgresql.html)。 –

+0

太好了,謝謝! – user3326384

回答

1

用於與Python兼容的Postgres與DB API 2.0兼容的流行模塊是psycopg2http://initd.org/psycopg/docs/index.html)。

這就是我一直用我的Python代碼與Postgres進行交互的人。我覺得它很容易使用,它提供了一些很容易添加的很好的附加功能,例如基於字典的遊標(例如,DictCursor,其中行在字典中,列名稱作爲關鍵字,而不是數組) 。

還有named cursors,所有你需要做的就是提供一個遊標的名稱,psycopg2會自動創建一個服務器端遊標爲你2000的默認塊大小,您可以遍歷任何其他Python對象,隨後的提取在後臺透明地進行。

+0

謝謝,也會檢查出來。 – user3326384

1

是的,Python DBAPI 2.0是用於在Python中與數據庫交互的標準API。請注意,DBAPI本身就是一個非常簡單的低級別接口,當不同的數據庫以不同的方式實現SQL時,編寫不同數據庫的數據庫查詢並不容易。

對於幫助您編寫可移植數據庫應用程序的更高級別的接口,您可以查看SQLAlchemy。 SQLalchemy核心和ORM都提供了一種用於以便攜方式查詢數據庫的語言。

相關問題