2009-05-11 7 views
0

私はPython 2.6のWinXPでアクセスしたいDBIモジュールを介して、既存のデータベース(データベースのタイプは不明)とインターフェースするPerlスクリプトを持っています。Pythonはperlのdbi/DBD :: Proxyへのアクセスに相当しますか? (Perl DBI/DBD :: Proxy for Python)

Perlのコードは次のとおりです。

use DBI; 
my $DSN = "DBI:Proxy:hostname=some.dot.com;port=12345;dsn=DBI:XXXX:ZZZZZ"; 
my $dbh = DBI->connect($DSN); 

が、これはPythonの同等に翻訳することはできますか?

import odbc 
DSN = "DBI:Proxy:hostname=some.dot.com;port=12345;dsn=DBI:XXXX:ZZZZZ" 
db = odbc.odbc(DSN) 

しかし、私はエラーを取得:

dbi.operation-error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified in LOGIN 

UPDATE

それはと思われるので例(Is there any pywin32 odbc connector documentation available?)、私は次のようにまとめてきた後

別のPerlモジュールであるDBD :: Proxyは、実際のインターフェイスをPerl DBI :: ProxyServer(サーバー側)の実装に提供しています。これは、実際のクエリ

pythonをPerlベースのDBI::ProxyServerとのインターフェイスに使用できますか?

http://metacpan.org/pod/DBD::Proxy

http://hell.org.ua/Docs/oreilly/weblinux/dbi/ch08_02.htm

+0

エラーのない同じWindowsマシンで同じPerlコードが実行されていますか? –

+0

良い質問です。私はDBIをインストールすることに取り組んでいます。これも別の問題です。 – monkut

+3

ActiveStateとStrawberry PerlのWindowsディストリビューションには、DBIがバンドルされています。 –

答えて

5

あなたのPythonスクリプトは、あなたのPerlスクリプトのラインの翻訳によってラインである必要はありません。

アクセスしたいデータベースにPython DB-API互換モジュールを使用するだけではどうですか? MySQLの場合は、MySQLdbを使用してください。 PostgreSQLの場合は、PyGreSQLを使用してください。

または "YourDatabaseName +パイソン" をGoogleで検索

+0

-1: "行単位の変換である必要はありません"は "行単位の変換ではありません"である必要があります。 –

+0

バックエンドデータベースがわからない場合はどうすればよいですか? (私は別のモジュールを試すことができると思います)。 Perl DBIモジュールは、指定された$ DSN値からバックエンドdbを魔法のように把握していますか? – monkut

+0

データベースは、ポート、接続プロトコル、SQL構文など、まったく一般的ではありません。 Python DB-APIは、各データベースのドライバが実装する共通のインターフェイスを提供し、基本ができるだけ一貫しているようにします。 PerlのDBIは同じです...各DB(およびDBドライバ)のライブラリを分離するために設計された間接的な層です。 –

0

sqlalchemyはかなりいいです。

+0

sqlalchemyはPerl DBI :: ProxyServerとインターフェースできますか? – monkut

+0

Python DBフレームワークをperl DBI構造と統合したいのはなぜですか?特に、Pythonで完全に機能するデータベースインターフェイスがある場合は、 –

+0

申し訳ありませんが、私は明らかにその質問を誤解していました。 – si28719e