Python и pymssql

Я новичок в 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 script всегда ничего не возвращает.

Я проверил, что у меня есть сетевое подключение. Я проверил имя пользователя, пароль и имя базы данных. Если я изменю пароль, то script выдаст ошибку.

Я попробовал results = cursor.fetchone(), но это не помогло.

Любые предложения?

Ответ 1

Если вы используете Ubuntu, вы, возможно, использовали (как я) apt-get для установки пакета pymssql.

Это известная ошибка в комплекте: https://bugs.launchpad.net/ubuntu/+source/pymssql/+bug/918896

Попробуйте установить его вручную, используя easy_install.

Ответ 2

У меня была такая же проблема на Ubuntu 12.04, действительно, исправление выполняет последовательность:

$ apt-get purge python-pymssql
$ apt-get install freetds-dev
$ pip install Cython
$ pip install pymssql

Ответ 3

Попробуйте добавить в свой запрос conn.commit()

Ответ 4

Без достаточной информации для воспроизведения примера трудно сказать конкретную проблему, с которой вы сталкиваетесь. Однако, есть несколько догадок о возможных проблемах:

  • Возможно, ваше фактическое имя столбца (предполагая, что ваш пример выше просто макет) слишком длинный. Смотрите: http://code.google.com/p/pymssql/wiki/FAQ (поиск имен столбцов беззвучно усекает до 30 символов (только 1.x)) Это обычное поездка людей, потому что она ТИХИЛИЯ терпит неудачу!
  • Если вы создаете таблицы перед их запросом или другие вещи, требующие коммитов, это может повредить вещи, даже если включена автоматическая автоматизация (autocommit(1)). См. Мой ответ на себя:) в pymssql (модуль python) не может использовать временные таблицы

Удачи!

Mike