Python 从Azure ML中的pyodbc连接到Azure SQL数据库的驱动程序的名称是什么?

Python 从Azure ML中的pyodbc连接到Azure SQL数据库的驱动程序的名称是什么?,python,pyodbc,azure-sql-database,azure-machine-learning-studio,cortana-intelligence,Python,Pyodbc,Azure Sql Database,Azure Machine Learning Studio,Cortana Intelligence,我正在尝试创建一个“阅读器”,以使用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

我正在尝试创建一个“阅读器”,以使用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};SERVER=yoursqlAzureServer.database.windows.net,1433', user='yourName@yoursqlAzureServer', password='Password', database='DBName')
请注意格式上的差异:用户、密码和数据库的参数不同,而第一个字符串中的参数是一体的


另请参阅此Azure页面:。它说明使用
pymssql
,而没有提到
pyodbc

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


使用它作为构建您的数据库的指南。

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

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

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

  • 根据,请参见下面的图3
  • 图3。

    您需要Microsoft ODBC驱动程序才能使用pyodbc。您可以从此处下载:。下载后,请尝试使用以下连接字符串:

    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支持部门得到了一个答案:

    目前无法从内部访问sql azure dbs “执行python脚本”模块。正如你所怀疑的,这是由于 执行环境中缺少odbc驱动程序。建议 解决方法是a)使用读卡器模块或b)导出到blob 并使用Azure Python SDK访问这些blob


    因此,目前不可能从Azure-ML中的“执行python脚本”模块连接到SQL server。如果您想更改它,请投票表决

    可能的重复项不回答问题server=tcp:[您的服务器在此处]。database.windows.net;数据库=数据库名称;用户ID=用户@[您的服务器在此];密码=密码;可信连接=False;加密=真;这应该是你的连接字符串。谢谢你的帮助,我刚刚尝试了它,并得到了相同的错误。它可能是其他东西,而不是连接string@aberoid,我也试过了,但是这个模块在Azure ML python脚本中不可用。当我尝试它的时候,它是。我得到了“ImportError:没有名为pymssql的模块”这在Azure ML“执行python脚本”模块中是不可能做到的使用它在Azure ML“执行python脚本”模块中是不可能做到的
    conn = pyodbc.connect('DRIVER={SQL Server};SERVER=server.database.windows.net,1433', user='user@server', password='Password', database='db_name')