2016-08-17 8 views
1

私は、virtualenvではなくPythonのMacosシステムインストールを使用していました。これで私はfreetdsとpymssql 2.1をインストールしました。使用して、データベースへのこの接続罰金:SQLサーバに接続していないpymssql 2.2の使用

pymssql.connect(server='the.host.name\instance', user='username' etc . .). 

そのvirtualenvのを実現するには、私のpython 2.7ベースの仮想ENVを作成し、pymssqlをインストールピップしようとしましたが、エラーメッセージが表示されましたものを行うための適切な方法です。クイック狩りは修正を発見した - すなわちではgitからインストールするには:

pip install git+https://github.com/pymssql/pymssql.git 

が、今私の接続コールがホスト-ない応答エラーを返します。私はtsqlを使ってデバッグ(TDSDUMP = stdout)しており、アドレス\インスタンスが問題を引き起こしているようです。アドレスがあるがインスタンスはないデータベースに接続すると正常に動作する

システム全体のインストールに戻って実行すると、freetdsがデータベースインスタンスのポート番号を特定のポート(portNo)に解決することがわかります。

私のvirtualenvでは、このポート番号を使ってpymssqlを呼び出すと、接続は正常です。この作品ながら

pymssql.connect(server='the.host.name\instance', user='username', port='portNo', etc . . .) 

は周りの作品 - 私は、サーバー上の任意の変更は、それを壊すかもしれないと推測しています。

私のpymssql呼び出しがこれらの条件で失敗する理由はありますか?

答えて

0

暗黙的より明示的です。常にポート番号を含めることをお勧めします(少なくとも私は行います)。

0

次の2つの項目を確認してください。

  • pymssql(グローバル1、あなたはvirtualenvの中に入るもの)の両方installatonsは、実際には同じFeeeTDSのバージョンにリンクされていることを確認します。複数のFreeTDSバージョンがインストールされている可能性があります。これが異なる動作を見せている理由です。
  • サーバーパラメータは\文字が含まれている、あなたのいずれか二重引用符は、それ('the.host.name\\instance')を確認するか、生の文字列表記(r'the.host.name\instance')を使用します。これは標準的なPython開発の習慣です。
関連する問題