Connecting to Azure SQL with Python

2020-07-24 05:40发布

问题:

I am trying to connect to a SQL Database hosted in Windows Azure through MySQLdb with Python.

I keep getting an error mysql_exceptions.OperationalError: (2001, 'Bad connection string.')

This information works when connecting through .NET (vb, C#) but I am definitely not having any luck here.

For below I used my server's name from azure then .database.windows.net Is this the correct way to go about this?

Here is my code:

#!/usr/bin/python
import MySQLdb

conn = MySQLdb.connect(host="<servername>.database.windows.net", user="myUsername", passwd="myPassword", db="db_name")

cursor = conn.cursor()

I have also tried using pyodbc with FreeTDS with no luck.

回答1:

@Kyle Moffat, what OS are you on? Here is how you can use pyodbc on Linux and Windows: https://msdn.microsoft.com/en-us/library/mt763261(v=sql.1).aspx

Windows:

  • Download and install Python
  • Install the Microsoft ODBC Driver 11 or 13:

    • v13: https://www.microsoft.com/en-us/download/details.aspx?id=50420
    • v11: https://www.microsoft.com/en-us/download/details.aspx?id=36434
  • Open cmd.exe as an administrator

  • Install pyodbc using pip - Python package manager

    cd C:\Python27\Scripts>  
    pip install pyodbc
    

Linux:

  • Open terminal Install Microsoft ODBC Driver 13 for Linux For Ubuntu 15.04 +

     sudo su  
     wget https://gallery.technet.microsoft.com/ODBC-Driver-13-for-Ubuntu-b87369f0/file/154097/2/installodbc.sh  
     sh installodbc.sh  
    
  • For RedHat 6,7

    sudo su
    wget https://gallery.technet.microsoft.com/ODBC-Driver-13-for-SQL-8d067754/file/153653/4/install.sh 
    sh install.sh 
    
  • Install pyodbc

    sudo -H pip install pyodbc
    

Once you install the ODBC driver and pyodbc you can use this Python sample to connect to Azure SQL DB

import pyodbc 
server = 'tcp:myserver.database.windows.net' 
database = 'mydb' 
username = 'myusername' 
password = 'mypassword' 
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT @@version;") 
row = cursor.fetchone() 
while row: 
    print row[0] 
    row = cursor.fetchone()

If you are not able to install the ODBC Driver you can also try pymssql + FreeTDS

sudo apt-get install python
sudo apt-get --assume-yes install freetds-dev freetds-bin
sudo apt-get --assume-yes install python-dev python-pip
sudo pip install pymssql==2.1.1

Once you follow these steps, you can use the following code sample to connect: https://msdn.microsoft.com/en-us/library/mt715796(v=sql.1).aspx