6

我正在尝试使用Azure ML中的'Execute python script'模块来创建'Reader'替代方案以从Azure SQL数据库读取数据。当我这样做时,我试图使用pyodbc库连接到Azure Sql。 这里是我的代码:在Azure ML中,从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本机客户端11.0}

这是我得到的错误:

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

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

,以确保公正,我想 “{SQL服务器}”, “{SQL Server本机客户端11.0}” 和 “{SQL Server本机客户端10.0}”,并得到了同样的错误

我也尝试了不同的格式:

conn = pyodbc.connect('DRIVER={SQL Server}; SERVER=server.database.windows.net; DATABASE=db_name; [email protected]; password=Password') 

conn = pyodbc.connect('DRIVER={SQL Server Native Client 11.0}; SERVER=server.database.windows.net; DATABASE=db_name; [email protected]; password=Password') 
+0

可能重复[通过pyodbc连接到Azure SQL数据库](http://stackoverflow.com/questions/30802199/connect-to-azure-sql-database-via- pyodbc) –

回答

2

我从Azure支持一个答案:

Currently it is not possible to access sql azure dbs from within an “execute python script” module. As you suspected this is due to missing odbc drivers in the execution environment. Suggested workarounds are to a) use reader module or b) export to blobs and use the Azure Python SDK for accessing those blobs http://blogs.msdn.com/b/bigdatasupport/archive/2015/10/02/using-azure-sdk-for-python.aspx

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

2

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

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

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

此外,请参阅Azure页面:Connect to SQL Database by using Python on Windows。它指出使用pymssql,而没有提及pyodbc

+0

@aberoid,我试过好,但这个模块是不是在Azure中ML Python脚本可用。当我尝试它时,它。我得到了“导入错误:没有模块名为pymssql” – marnun

+0

这是不可能在Azure的ML做“执行python脚本”模块 – marnun

+0

这样做使用https://azure.microsoft.com/en-gb/documentation/articles/machine-learning -data科学样本数据-SQL服务器/ – marnun

1

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

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

使用它作为指导来构建你的。

+0

这不回答这个问题 – marnun

+0

我试了一下,得到了相同的连接字符串 – marnun

+0

服务器= TCP:在这里你的服务器] .database.windows.net;数据库= DB_NAME ; User ID = user @ [你的服务器在这里]; Password =密码; Trusted_Connection = False; Encrypt = True; 这应该是你的连接字符串。 – jazz

1

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

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

图1.在天青老门户 enter image description here

图2.在天青新的门户(版本11.0以后然后V10.0) enter image description here

  • 根据the Pyodbc code comments,请看下面的图3。
  • 图3。 enter image description here

    +0

    潘,这并不工作,以及 – marnun

    +0

    你试图重现它在Azure的ML? – marnun

    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; [email protected]; password=Password') 
    

    如果这个字符串确实没有工作,试试这个:

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

    如果仍然无法使用pyodbc让我知道。

    干杯,
    符合

    +0

    在Azure-ML“执行python脚本”模块中无法做到 – marnun

    相关问题