python Azure函数:“无法打开库'ODBC Driver 18 for SQL Server':找不到文件(0)(SQLDriverConnect)”)

yduiuuwa  于 2023-10-15  发布在  Python
关注(0)|答案(1)|浏览(204)

我能够上传一个Azure函数Python项目,它接收并返回请求,但由于某种原因,我得到以下错误:

我试过使用ODBC 18,什么都没有。我尝试使用pyodbc.drivers()技巧,但它显示了这一点:


Azure Functions似乎有一个空的驱动程序列表,我开始认为它没有安装任何驱动程序。
有办法安装ODBC或其他驱动程序吗?或者这个问题还有其他解释?
下面是我创建连接的代码,我使用PyODBC沿着SQLAlchemy和Azure Functions(使用Linux和python 3.11)。

url = URL.create(
            "mssql+pyodbc",
            username=os.environ.get("DB_USER"),
            password=os.environ.get("DB_PASSWORD"),
            host=os.environ.get("DB_HOST"),
            port=1433,
            database=os.environ.get("DB_NAME"),
            query={
                "driver": "ODBC Driver 18 for SQL Server",
                "TrustServerCertificate": "yes",
                "Encrypt": "yes",
            },
        )

    engine = create_engine(url, echo=echo, connect_args={"timeout": 40})

谢谢
我试图改变到另一个驱动程序版本,我希望工作,但它仍然给出同样的错误。

kmpatx3s

kmpatx3s1#

我在我的环境中复制,下面是我的预期结果:

__init__.py

import os
import logging
import pyodbc
import azure.functions as func

def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request Rithwik.')
    server1 = 'servername.database.windows.net'
    db1 = 'rith'
    username1 = 'rithwik'
    pwd1 = 'password'
    constring = f"Driver={{ODBC Driver 17 for SQL Server}};Server={server1};Database={db1};Uid={username1};Pwd={pwd1};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;"
    with pyodbc.connect(constring) as conn:
        with conn.cursor() as c3:
            c3.execute('SELECT SYSTEM_USER;')
            row = c3.fetchone()
    print("User is ",row)
    return func.HttpResponse(f"SQL Query Result: {row}", status_code=200)

requirements.txt:

Output:

尝试将您的代码集成到我的,你会输出,因为我已经得到了。您也可以访问SO-Thread

相关问题