pypyodbc : Проблема

Я пытаюсь извлечь данные из базы данных SQL Server, используя pypyodbc. Но кажется, что мой код ломается, когда я пытаюсь построить оператор SELECT, используя

myCursor.execute(SQLCommand,values)

Может ли кто-нибудь обнаружить проблему и указать мне правильное направление?

import pypyodbc
try:
    myConnection = pypyodbc.connect('Driver={SQL Server};'
                                   'Server=THINKPAD\STEVE_DEVELOPER;'
                                   'Database=PythonTest;'
                                   'uid=sa; pwd=passwordCC')
    myCursor = myConnection.cursor()
    print("Connection Made")    
    SQLCommand =("SELECT First_Name, Date FROM [PythonTest].[dbo].[Names] WHERE First_Name =?") 
    values = ['Mike']
    print("SQL command elements Created")
#After this is where it falls over
    myCursor.execute(SQLCommand,values)
    print("SQL statement constructed ")
    results = myCursor.fetchone()
    print(results[0])
    print("Sucessfully retreive record")
    myconnection.close()
except:
    print('Record NOT  sucessfully retreived')

Привет Стив


person Steve    schedule 12.11.2016    source источник
comment
Выньте try ... except и покажите нам трассировку.   -  person cco    schedule 12.11.2016
comment
OK - несовместимость varchar с оператором =. Отсортировано, заменив = на НРАВИТСЯ. Спасибо за указатель на удаление try/except для просмотра трассировки. Новичок учится :)   -  person Steve    schedule 12.11.2016


Ответы (1)


В Python исключения — ваши друзья. Трассировка сообщает вам, где что-то пошло не так, а исключение обычно (надеюсь) сообщает вам, что пошло не так.

Подавление всех исключений с помощью except: является (почти) всегда плохой идеей — если вы перехватываете исключение, вы должны знать, что вы ожидаете перехватить и как с этим бороться; если вы этого не сделаете, вы обычно хотите передать его следующему обработчику, который либо обработает его, либо покажет трассировку (или и то, и другое).

person cco    schedule 12.11.2016
comment
Спасибо - совершенно логично однажды указал на это. Очень признателен! - person Steve; 13.11.2016