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