Я создаю функцию Azure, используя Python 3.11, для записи данных в базу данных SQL Azure с помощью библиотеки pyodbc
. Однако я столкнулся с проблемой, когда драйвер ODBC 18 не найден. Я получаю сообщение об ошибке:
Ошибка: («01000», «[01000] [unixODBC][Диспетчер драйверов]Невозможно открыть библиотеку «Драйвер ODBC 18 для SQL Server»: файл не найден (0) (SQLDriverConnect)»)
Я пробовал следующее:
Среда:
pyodbc
есть azure-functions
и requirements.txt
.Кто-нибудь сталкивался с подобной проблемой или может предоставить рекомендации по настройке драйверов ODBC для Azure SQL в этой среде?
Спасибо!
Я создал функцию Python плана потребления на базе Linux с версией 3.11
.
Я получал сообщение об ошибке ODBC Driver 17 for SQL Server
в python 3.11
, но ODBC Driver 18 for SQL Server
у меня работало нормально.
Python 3.11 не поддерживает
ODBC Driver 17
, а 3.10 не поддерживаетODBC Driver 18
. Убедитесь, что версия правильная, с правильной версией драйвера.
Если в 3.11 все еще не работает, я бы предложил попробовать использовать 3.12.
Ниже приведен код функции, который работал у меня:
import azure.functions as func
import logging
import pyodbc
app = func.FunctionApp()
@app.route(route = "http_trigger", auth_level=func.AuthLevel.ANONYMOUS)
def http_trigger(req: func.HttpRequest) -> func.HttpResponse:
try:
Connectionstring = "Driver = {ODBC Driver 18 for SQL Server};Server=tcp:sqlserver31aug.database.windows.net,1433;Database=sqldb31aug;Uid = {your username};Pwd = {your password};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;"
with pyodbc.connect(Connectionstring) as conn:
with conn.cursor() as cursor:
cursor.execute("SELECT SYSTEM_USER;")
result = cursor.fetchone()
logging.info('Python HTTP trigger function processed a request.')
logging.info("SYSTEM_USER: %s", result)
return func.HttpResponse(f"SYSTEM_USER: {result}", status_code=200)
except pyodbc.Error as e:
logging.error(f"SQL query failed: {e}")
return func.HttpResponse(f"SQL query failed: {e}")
OUPUT
:Спасибо! Я повторил попытку Python 3.11 с драйвером ODBC 18, и это сработало.
@Мавати рад, что это помогло
Можете ли вы поделиться своим кодом функции?