Python pyodbc cursor.execute (запрос) не работает при компиляции .exe

#python #sql #windows #pyodbc

#python #sql #Windows #pyodbc

Вопрос:

Я пытаюсь создать оповещение с помощью Python, которое подключается к базе данных SQL, выполняет SELECT и на основе результатов отправляет оповещение через SMTP. Я все понял, это работает при выполнении скрипта Python из Visual Studio. Но если я скомпилирую его в .exe с помощью pyinstaller (который мне нужно выполнить из планировщика задач Windows на сервере, на котором не установлен Python) и попытаюсь запустить его, он останавливается на строке, которая выполняет запрос. Вот код:

 for BM in servers: 
        try:
            server = BM[0]
            db = BM[1]

            conn = pyodbc.connect('driver={%s};server=%s;database=%s;uid=%s;pwd=%s' % ( driver, server, db, user, password ) )
            log.write("Conectado"   'n')

            cursor = conn.cursor()
            log.write("Cursor creado"   'n')

            try:
                cursor.execute(query)
                log.write("Query ejecutada"   'n')

            except pyodbc.Error as ex:
                log.write(ex   'n')

        except pyodbc.Error as ex:
            log.write(ex   'n')
  

Строка, которая останавливает скрипт, называется cursor.execute(запрос) . И «запрос» — это простой ВЫБОР * ИЗ таблицы, без условий.

Как я могу заставить это работать?

Комментарии:

1. И в журналах ничего не отображается, чтобы указать, в чем может быть проблема?

2. Ничего, это просто останавливается. Он записывает первые два log.write, но никогда не доходит до третьего.

3. Завершается ли процесс или он зависает?

4. Завершается. Окно закрывается.