【问题标题】:What is the name of the driver to connect to Azure SQL Database from pyodbc in Azure ML?从 Azure ML 中的 pyodbc 连接到 Azure SQL 数据库的驱动程序的名称是什么?
【发布时间】:2016-02-28 13:04:21
【问题描述】:

我正在尝试创建一个“Reader”替代方案,以使用 Azure ML 中的“执行 python 脚本”模块从 Azure SQL 数据库读取数据。 这样做时,我正在尝试使用 pyodbc 库连接到 Azure Sql。 这是我的代码:

def azureml_main(dataframe1 = None, dataframe2 = None):
    import pyodbc   
    import pandas as pd

    conn = pyodbc.connect('DRIVER={SQL Server}; SERVER=server.database.windows.net; DATABASE=db_name; UID=user; PWD=Password')
    SQLCommand = ('''select * from table1 ''')
    data_frame = pd.read_sql(SQLCommand, conn)
    return data_frame,

还尝试使用不同的驱动程序名称:{SQL Server Native Client 11.0}

这是我得到的错误:

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

有人知道我应该使用哪个驱动程序吗?

只是为了确保,我尝试了“{SQL Server}”、“{SQL Server Native Client 11.0}”和“{SQL Server Native Client 10.0}”并得到了同样的错误

我也尝试了不同的格式:

conn = pyodbc.connect('DRIVER={SQL Server}; SERVER=server.database.windows.net; DATABASE=db_name; user=user@server; password=Password')

conn = pyodbc.connect('DRIVER={SQL Server Native Client 11.0}; SERVER=server.database.windows.net; DATABASE=db_name; user=user@server; password=Password')

【问题讨论】:

标签: python pyodbc azure-sql-database azure-machine-learning-studio cortana-intelligence


【解决方案1】:

根据this answer,连接字符串应该是:

conn = pyodbc.connect('DRIVER={SQL Server};SERVER=yoursqlAzureServer.database.windows.net,1433', user='yourName@yoursqlAzureServer', password='Password', database='DBName')

注意格式的区别:用户、密码和数据库的不同参数与第一个字符串中的所有参数。

也相关,请参阅此 Azure 页面:Connect to SQL Database by using Python on Windows。它声明使用pymssql,没有提及pyodbc

【讨论】:

  • @aberoid,我也试过了,但是这个模块在 Azure ML python 脚本中不可用。当我尝试它时,它。我得到“ImportError:没有名为 pymssql 的模块”
  • 在 Azure-ML“执行 python 脚本”模块中是不可能的
【解决方案2】:

您需要 Microsoft ODBC 驱动程序才能使用 pyodbc。你可以从这里下载它:https://www.microsoft.com/en-us/download/details.aspx?id=36434。下载后,尝试使用以下连接字符串:

conn = pyodbc.connect('DRIVER={SQL Server Native Client 11.0}; SERVER=server.database.windows.net; DATABASE=db_name; user=user@server; password=Password')

如果这个字符串不起作用,试试这个:

conn = pyodbc.connect('DRIVER={SQL Server};SERVER=server.database.windows.net,1433', user='user@server', password='Password', database='db_name')

如果您仍然无法使用 pyodbc,请告诉我。

干杯,
见面

【讨论】:

  • 在 Azure-ML“执行 python 脚本”模块中是不可能的
【解决方案3】:

我从 azure support 得到了答复:

目前无法从内部访问 sql azure dbs “执行python脚本”模块。正如您所怀疑的,这是由于 执行环境中缺少 odbc 驱动程序。建议 解决方法是 a) 使用阅读器模块或 b) 导出到 blob 并使用 Azure Python SDK 访问这些 blob http://blogs.msdn.com/b/bigdatasupport/archive/2015/10/02/using-azure-sdk-for-python.aspx

所以目前它不可能从 Azure-ML 中的“执行 python 脚本”模块连接到 SQL 服务器。如果你想改变它,请投票here

【讨论】:

    【解决方案4】:

    连接字符串的最终真相:-) 是:

    https://www.connectionstrings.com/sql-azure/

    用它作为构建你的指南。

    【讨论】:

    • 这没有回答问题
    • Server=tcp:[你的服务器].database.windows.net;Database=db_name;用户 ID=user@[你的服务器];Password=Password;Trusted_Connection=False;Encrypt=True ;这应该是您的连接字符串。
    • 感谢您的帮助,我刚刚试了一下,也遇到了同样的错误。它可能是其他东西,而不是连接字符串
    【解决方案5】:

    Pyodbc 的 SQL 数据库驱动程序名称应为 {SQL Server Native Client 10.0},原因如下。

    1. Azure 门户上显示的 SQL 数据库连接字符串,请参见下图 1 和图 2。

    图 1. 在 Azure 旧门户上

    图 2. 在 Azure 新门户上(版本 11.0 之后是 v10.0)

    1. 根据the Pyodbc code comments,请看下图3。

    图 3。

    【讨论】:

      猜你喜欢
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      • 2021-04-27
      相关资源
      最近更新 更多