Результат: Исключение сбоя: AttributeError: объект "Engine" не имеет атрибута "выполнить" Функции Azure

Я новичок в функциях Azure. Этот код по какой-то причине запускается локально, но при развертывании в функции Azure выдает эту ошибку.

from sqlalchemy import create_engine, event
import textwrap
import base64
import pandas as pd
import logging
import pyodbc

def sql_run_query(data_base,service_date):
    driver = '{ODBC Driver 17 for SQL Server}'
    server_name = **********************************
    database_name = data_base
    server='{server_name},1433'.format(server_name=server_name)
    username = **********************************
    password = **********************************
    connection_string=textwrap.dedent('''Driver = {driver};Server = {server};Database = {database};Uid = {username};Pwd = {password};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;'''.format(driver=driver,server=server,database=database_name,username=username,password=password))
    engine = create_engine('mssql+pyodbc:///?odbc_connect='+connection_string)
    #engine =create_sql_engine(data_base)
    engine.execute('declare @service_date_var as varchar(100) = '+service_date+'delete from [dbo].[performance] where service_date = @service_date_var')
    logging.info(f"query in {data_base} run succesfully")
    print(f"query in {data_base} run succesfully")

Результат: сбой Исключение: AttributeError: объект Engine не имеет атрибута execute Стек: файл "/azure-functions-host/workers/python/3.9/LINUX/X64/azure_functions_worker/dispatcher.py", строка 452, в _handle__invocation_request call_result = await self._loop.run_in_executor( File "/usr/local/lib/python3.9/concurrent/futures/thread.py", строка 58, результат выполнения = self.fn(*self.args, **self .kwargs) Файл "/azure-functions-host/workers/python/3.9/LINUX/X64/azure_functions_worker/dispatcher.py", строка 718, в _run_sync_func return ExtensionManager.get_sync_invocation_wrapper(context, File "/azure-functions-host/ workers/python/3.9/LINUX/X64/azure_functions_worker/extension.py", строка 215, в _raw_invocation_wrapper result = function(**args) File "/home/site/wwwroot/BlobTrigger2/init.py", строка 40, в main sql_run_query('kad_smc',dte) Файл "/home/site/wwwroot/sql_uploader/sql_uploader.py", строка 74, в sql_run_query engine.execute('''

Может ли кто-нибудь объяснить причину этого и возможное решение?

Спасибо!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
135
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

устаревший execute метод engine был удален в SQLAlchemy 2.0. Вам необходимо убедиться, что вы используете одну и ту же версию SQLAlchemy в обеих средах, и рассмотреть возможность миграции на версию 2.0.

Что, если мы понизим версию SQLAlchemy до версии 1.4? Устранит ли это проблему?

Robin 17.02.2023 16:39

@Робин Я ожидал этого.

snakecharmerb 17.02.2023 17:18

Другие вопросы по теме