13

私はPythonを初めて使用します。MSSQLデータベースにクエリを実行しようとしています。


import pymssql
conn = pymssql.connect(host='hostname', user='username', password='password', database='dbname')
cursor = conn.cursor()
sql = "select count(*) from T_Email with (nolock) where Transmit is null"
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
  print (row)

クエリは正常に実行されますが、Microsoft SQL Server Management Studioですが、Pythonスクリプトは常に何も返しません。

ネットワークに接続できることを確認しました。ユーザー名、パスワード、データベース名を確認しました。パスワードを変更すると、スクリプトでエラーが発生します。

results = cursor.fetchone()を試しましたが、役に立ちませんでした。

助言がありますか?

4

6 に答える 6

4

Ubuntuを使用している場合は、(私のように)apt-getを使用してpymssqlパッケージをインストールした可能性があります。

これはバンドルバージョンの既知のバグです:https ://bugs.launchpad.net/ubuntu/+source/pymssql/+bug/918896

easy_installを使用して手動でインストールしてみてください。

于 2012-12-29T16:40:01.127 に答える
4

Ubuntu 12.04 でも同じ問題が発生しました。実際、修正は次のシーケンスを実行しています。

$ apt-get purge python-pymssql
$ apt-get install freetds-dev
$ pip install Cython
$ pip install pymssql
于 2013-06-06T20:27:16.817 に答える
1

クエリに conn.commit() を追加してみてください

于 2011-08-31T00:31:58.030 に答える
0

例を再現するのに十分な情報がないと、発生している特定の問題を特定するのは困難です。ただし、考えられる問題については、いくつかの推測があります。

  1. 実際の列名 (上記の例が単なるモックアップであると仮定) が長すぎる可能性があります。参照: http://code.google.com/p/pymssql/wiki/FAQ (Column names get quietly truncated to 30 characters. (1.x only) を探してください)失敗!!
  2. クエリを実行する前にテーブルを作成している場合、またはコミットが必要なその他のものを作成している場合は、自動コミットがオンになっていても混乱する可能性があります ( autocommit(1))。自分への私の答えを参照してください:) pymssql (pythonモジュール)で一時テーブルを使用できません

幸運を!

マイク

于 2012-01-13T01:01:22.037 に答える
0

コード スニペットの次の行を変更します。

results = cursor.fetchall()
for row in results:
  print (row)

の中へ

# results = cursor.fetchall()
for row in cursor:
  print (row)

pymssql には、 cursor.fetchall()にバグがあります。

参考までにhttps://github.com/pymssql/pymssql/issues/141

于 2018-05-18T08:44:29.513 に答える