Etapa 3: Prova de conceito da conexão ao SQL usando pyodbcStep 3: Proof of concept connecting to SQL using pyodbc

Este exemplo é uma prova de conceito.This example is a proof of concept. O código de exemplo está simplificado para fins de clareza e não necessariamente representa as melhores práticas recomendadas pela Microsoft.The sample code is simplified for clarity, and doesn't necessarily represent best practices recommended by Microsoft.

Para começar, execute o script de exemplo a seguir.To get started, run the following sample script. Crie um arquivo chamado test.py e adicione cada snippet de código conforme prosseguir.Create a file called test.py, and add each code snippet as you go.

> python test.py

ConectarConnect

import pyodbc 
# Some other example server values are
# server = 'localhost\sqlexpress' # for a named instance
# server = 'myserver,port' # to specify an alternate port
server = 'tcp:myserver.database.windows.net' 
database = 'mydb' 
username = 'myusername' 
password = 'mypassword' 
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()

Executar consultaRun query

A função cursor.execute pode ser usada para recuperar um conjunto de resultados de uma consulta no Banco de Dados SQL.The cursor.executefunction can be used to retrieve a result set from a query against SQL Database. Essa função aceita uma consulta e retorna um conjunto de resultados que pode ser iterado com o uso de cursor.fetchone()This function accepts a query and returns a result set, which can be iterated over with the use of cursor.fetchone()

#Sample select query
cursor.execute("SELECT @@version;") 
row = cursor.fetchone() 
while row: 
    print(row[0])
    row = cursor.fetchone()

Inserir uma linhaInsert a row

Neste exemplo, você verá como executar uma instrução INSERT com segurança e passar parâmetros que protegem seu aplicativo contra a injeção de SQL.In this example, you see how to run an INSERT statement safely, and pass parameters, which protect your application from SQL injection.

#Sample insert query
cursor.execute("""
INSERT INTO SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) 
VALUES (?,?,?,?,?)""",
'SQL Server Express New 20', 'SQLEXPRESS New 20', 0, 0, CURRENT_TIMESTAMP) 
cnxn.commit()
row = cursor.fetchone()

while row: 
    print('Inserted Product key is ' + str(row[0]))
    row = cursor.fetchone()

Azure Active Directory e a cadeia de conexãoAzure Active Directory and the connection string

O pyODBC usa o driver ODBC da Microsoft para SQL Server.pyODBC uses the Microsoft ODBC driver for SQL Server. Se a versão do driver ODBC for 17.1 ou posterior, você poderá usar o modo interativo do Azure Active Directory do driver ODBC por meio de pyODBC.If your version of the ODBC driver is 17.1 or later, you can use the Azure Active Directory interactive mode of the ODBC driver through pyODBC. Essa opção interativa funcionará se o Python e o pyODBC permitirem que o driver ODBC exiba a caixa de diálogo.This interactive option works if Python and pyODBC permit the ODBC driver to display the dialog. Essa opção só está disponível nos sistemas operacionais Windows.The option is only available on Windows operating systems.

Exemplo de cadeia de conexão para autenticação interativa do Azure Active DirectoryExample connection string for Azure Active Directory interactive authentication

O exemplo a seguir fornece uma cadeia de conexão ODBC que especifica a autenticação interativa do Azure Active Directory:The following example provides an ODBC connection string that specifies Azure Active Directory interactive authentication:

server=Server;database=Database;UID=UserName;Authentication=ActiveDirectoryInteractive;

Para obter mais informações sobre as opções de autenticação do driver ODBC, confira Usar o Azure Active Directory com o Driver ODBC.For more information about the authentication options of the ODBC driver, see Using Azure Active Directory with the ODBC Driver.

Próximas etapasNext steps

Para saber mais, confira o Centro de Desenvolvedores do Python.For more information, see the Python Developer Center.