3

MySQL と PostgreSQL の両方にアクセスできるピュア python SQL ライブラリを探しています。

唯一の要件は、Python 2.5 以降で実行され、純粋な Python であることです。そのため、スクリプトに含めることができ、ほとんどのプラットフォームで実行できます (インストール不要)。

実際、SQL を記述して結果を CSV ファイルとしてエクスポートできるシンプルなソリューションを探しています。

4

3 に答える 3

4

2 つの部分の答え:

A) これは絶対に可能です。

B)正確な懸念に応じて、純粋なpythonが問題への良いアプローチである場合とそうでない場合があります。

説明:

ライブラリには 2 つのSqlAlchemyコンポーネントが付属しています: より一般的な "ORM" と、その上にある "Core" です。どちらの方法でも、SQL コマンドを SqlAlchemy 形式 (Python のみ) で記述できます。次に、SqlAlchemy はステートメントを Mysql または PostgreSQL にコンパイルし、適切なデータベースに接続します。

SqlAlchemy は優れたライブラリであり、ほぼすべてのものに使用することをお勧めします。ステートメントをその形式で作成する必要がありますが、簡単に理解できます。また、必要な基本データベース ライブラリに事実上いつでも切り替えることができます。複数のバックエンドをサポートする必要があるかどうかに関係なく、あらゆるデータベース プロジェクトで使用するのに最適なプラットフォームです。

SqlAlchemy は、標準の DBAPI ドライバーを介してデータベースと通信し、純粋な python の複数のオプション、特にpymysqlおよびpypostgresqlドライバー ( http://docs.sqlalchemy.org/en/latest/core/engines.html#supported-dbapis )をサポートします。

csv の記述に関しては、標準ライブラリでカバーされています。

import csv

では、注意事項は?

以下は、状況に当てはまる場合と当てはまらない場合があります。

Python ユニバースの最も高いレベルの db モジュールは、まだ mysql-python と psycopg を推奨しています。どちらも純粋な python ではなく、インストールされたデータベースに対してコンパイル/リンク/構成します。これは主に、API/統合の問題と、CPython で実行した場合の c-extensions と比較したさまざまな pure-python パッケージの速度が混在しているためと思われます。

私が推奨する純粋な Python ドライバーもありますが、ほとんどのレビュアーは、それらは主に実験的なものであると述べています。pymysql の作成者は、安定性と製品の準備ができていると主張していますが、ブログを書いている一部の開発者はそれに異議を唱えています。「安定」または「実験的」が何を意味するかについては、プロジェクトによって異なります。API が変更されているものもあれば、不完全なものもあれば、バグのあるものもあります。

必要な正確な操作をサポートする各システムの純粋な python ドライバーを見つけることができることを確認する必要があります。これは単純かもしれませんし、面倒かもしれません。SqlAlchemy を使用する場合でも、他のものを使用する場合でも、DBAPI ドライバーを選択するときにこの問題に直面することになります。

PyPy プロジェクト ( pure-python python interpreter ) には、さまざまなパッケージの互換性を一覧表示する wiki があります 。PyPy が目的のプラットフォームである場合、SqlAlchemy はその上でも完全に実行されます。

于 2012-08-08T17:39:40.567 に答える
1

SQL-Alchemyを使用します。ほとんどのデータベースタイプで動作し、postgresとMySQLでも動作します。

于 2012-08-08T17:45:18.483 に答える
1

ORM、または SQL ステートメントを直接記述して相違点を変換できる単一のライブラリをお探しですか?

psycopg2 が純粋な Python であるかどうかはわかりませんが、確かにバインディングがあり、すべてのプラットフォームで動作します。Python (私が知る限り) がネイティブに同梱されていないため、PostgreSQL データベースと通信するには、少なくとも psycopg2 をインストールする必要があります。

そこから、必要な追加の ORM ライブラリもインストールする必要がありますが、ほとんどは使用するバックエンドの上位に純粋な Python です。

Storm、Django、SQLAlchemy はすべて、データベース層の上に抽象化された層を持っています-あなたの説明に基づいて、Django はおそらくあなたのニーズに対して大きすぎるフレームワークです (私のものでした) が、人気のあるものです.SQLAlchemy は実証済みの真のシステムです-特に継承を処理する必要がある場合は、少し扱いに​​くいです(私の意見では)。Storm は良いと聞いたことがありますが、あまりテストしていないので、完全には言えません。

MySQL のいくつかのテーブルと PostgreSQL のいくつかのテーブルを組み合わせて使用​​する場合と、MySQL または PostgreSQL のいずれかである可能性のある単一のデータベースを使用する場合、オブジェクト指向設計に重点を置いた ORB と呼ばれる ORM に取り組んできました。複数のデータベースとデータベース間の関係を可能にします。現在、PostgreSQL と Mongo のみをサポートしています。MySQL は必要なかったからです。しかし、そのバックエンドを作成する準備はできています。そのコードはhttp://docs.projexsoftware.com/api/orbにあります。

于 2012-08-08T17:05:53.090 に答える