Python и Pymssql - PullRequest
       7

Python и Pymssql

12 голосов
/ 31 августа 2011

Я новичок в питоне.Я пытаюсь выполнить запрос к базе данных 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 всегда ничего не возвращает.Я подтвердил, что у меня есть подключение к сети.Я проверил имя пользователя, пароль и имя базы данных.Если я поменяю пароль, то скрипт выдаст ошибку.

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

Есть предложения?

Ответы [ 6 ]

4 голосов
/ 07 июня 2013

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

$ apt-get purge python-pymssql
$ apt-get install freetds-dev
$ pip install Cython
$ pip install pymssql
4 голосов
/ 29 декабря 2012

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

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

Попробуйте установить его вручную с помощью easy_install.

1 голос
/ 31 августа 2011

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

0 голосов
/ 18 мая 2018

Измените следующие строки в своем фрагменте кода

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

0 голосов
/ 28 апреля 2018
import pymssql

conn = pymssql.connect(
server="server",
port=port,
user="user",
password=password,
database="database")
conn

cursor = conn.cursor()
cursor.execute("select count(*) from T_Email with (nolock) where Transmit is null")
     for row in cursor.fetchall():  
     print ("%s\n" % str(row))
conn.close()
0 голосов
/ 13 января 2012

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

  1. Возможно, ваше реальное имя столбца (предположим, что приведенный выше пример был просто макетом) слишком длинное. См .: http://code.google.com/p/pymssql/wiki/FAQ (ищите имена столбцов, которые молча усекаются до 30 символов. (Только 1.x)) Это обычное явление, которое сбивает людей с толку, потому что оно БЕСПЛАТНО терпит неудачу !!
  2. Если вы создаете таблицы перед запросом к ним или другими вещами, требующими фиксации, это может привести к путанице даже при включенной автоматической фиксации (autocommit(1)). Смотрите мой ответ себе :) на pymssql (модуль Python) не может использовать временные таблицы

Удачи!

Mike

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...