Я новичок в функциях 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('''
Может ли кто-нибудь объяснить причину этого и возможное решение?
Спасибо!
устаревший execute
метод engine
был удален в SQLAlchemy 2.0. Вам необходимо убедиться, что вы используете одну и ту же версию SQLAlchemy в обеих средах, и рассмотреть возможность миграции на версию 2.0.
@Робин Я ожидал этого.
Что, если мы понизим версию SQLAlchemy до версии 1.4? Устранит ли это проблему?