2012-01-11 67 views
18

私は比較的新しいデータベース、SQLクエリなどを実行しています。現時点で私は自分のDBにMS SQL Serverを独占的に使用しています。私の質問への答えは、その特定のDBだけのものよりも一般的である可能性があります。対pymssql対pyodbc対adodbapi対...

私は、DBインターフェイスアプリケーション(この場合はSQL Server Management Studio)を使用して作業を行いますが、一部はcronジョブとして実行されるpythonスクリプトを使用して作業しますユーザーがDBにクエリを送信できるようなWebサイトです。

私は&をPythonからDBに書き込むためにpymssqlモジュールを使用しています。しかし、いくつか迷惑な問題があります。 (pymssqlはテンポラリテーブルを使用できないようですが、私は "autocommit"に問題がありましたが、それはおそらく自分自身の責任です)。

これはあまり知られていません。私は行くべきだ。私の知る限り、私はどちらかでした:MS SQLサーバーに直接最初にFreeTDS & unixODBCのをインストールし、

  • 使用し、それらを設定する必要が
  • 使用pyodbcを語る

    • 使用pymssqlを、 adodbapiモジュールがあり、私はここでどのような必要条件が必要なのかよく分かりません。
    • 別の方法??

    実際には、私はFULLY何かを取得します。それは、ある種の「認証仲介」のように思えます。つまり、真の男のように、ユーザーが誰であるかを確認することです。そして、私はADOについての理解があまりありません。

    pymssqlは最も簡単な方法だと思われますが、それはまた、人々がそれほど高くないと思われるもの、そして最終的に非難されるようです。私はむしろこのようなものから始めているので、むしろ「正しい」方法を学ぶだろう。

    私は、PythonにMS SQL Serverとの会話や一般的なDBとの話をする最善の方法に関する知識豊富な意見を探しています。適度に複雑なものをやる人にとっては「最高」を最高と定義します。 (私はちょうど始まったばかりですが、最終的にかなり上がっていくつもりです)

    ありがとう! マイク

  • 答えて

    16

    pyodbc(推奨)

    私は数ヶ月前にこのモジュールを使用して開始し、これまでのところ何の不満を持っていませんしました。開発コミュニティはpymssqlよりも活発に見えます。これまでのインストールの問題はありませんでした(32bit Win XPと64bit Server 2008 R2)。 MS SQL Serverに限定されないという利点があります。

    Windowsにインストールする場合は、http://www.lfd.uci.edu/~gohlke/pythonlibs/が役に立ちます。

    pymssql

    私は約2.5年間の1.xのバージョンで働いてきました。私は大きなオブジェクトのサイズ制限に若干の問題がありました。私はマルチスレッド時に大問題に遭遇しました(私がオフにしなければならなかった点まで)。 1.xは廃止予定のMSライブラリに基づいていました。しかし、最近のバージョンは2.xであり、これらの廃止されたライブラリはもう使用されません。代わりにFreeTDS(pyodbcなど)を使用します。それは良いと思うが、まだ試していない。

    adodbapi

    私はpymssqlを切り替えて、約一年前adodbapiに置き換える試みたとpymssqlでうまく働いたクエリのいくつかは、明白な理由で失敗しました。私はすぐに再びadodbapiを放棄した。

    +3

    pyodbcは2016年12月に発表されたように[正式にMicrosoftによってサポートされています](https://blogs.technet.microsoft.com/dataplatforminsider/2016/12/09/sql-server -python-whats-new /)。 –

    9

    私の経験から、最近PYODBCは少し問題があります。まず、Unicode文字列を適切に、または確実に管理していないようです。第二に、APIは古くて特定のものであり、Python DB-API(PEP-249)に準拠していません。

    プロジェクトコードをPYMSSQLに移行する途中で、これまでのテストで上記の両方の問題の基盤をカバーしています。私はこのAPIの廃止予定を認識していません(2013年10月のメジャーバージョン)、ドキュメントは多かれ少なかれ最新のものであり、アクティブになっています。

    これは、PYODBCとPYMSSQLの現在の調査結果です。すべての変更の対象:

    +2

    はい、pyodbcは少し荒いパッチを通過しましたが、最近TLCを受け取りました。[Microsoftによって正式にサポートされています](https://blogs.technet.microsoft.com/dataplatforminsider/2016/12/09/) sql-server-python-whats-new /)を使用します。 –

    +1

    今年(2017年)、pymssqlを中止する提案がありました。[pyymbqlを無効にする提案](https://github.com/pymssql/pymssql/issues/477)と[pymssql vs pyodbc]( https://groups.google.com/forum/#!topic/pymssql/CLXHtLKBWig)。彼らは続けることに決めましたが、最後のリンクはpymssqlの背後にあるコミュニティがメンテナを見つけるのに苦労していることを示しています。私は今pyodbcが一般的にはより良い選択のように思える(おそらくpymssqlは依然としてあなたのニーズによります)。 –

    関連する問題