Quickstart: Python gebruiken om verbinding te maken en query's uit te voeren op gegevens in Azure Database for MySQL - Flexible Server
VAN TOEPASSING OP: Azure Database for MySQL - Flexibele server
In deze quickstart maakt u verbinding met Azure Database for MySQL Flexible Server met behulp van Python. U gebruikt vervolgens SQL-instructies om gegevens op te vragen, in te voegen, bij te werken en te verwijderen in de database vanaf Mac-, Ubuntu Linux- en Windows-platforms.
In dit artikel wordt ervan uitgegaan dat u bekend bent met het ontwikkelen met behulp van Python, maar geen ervaring hebt met het werken met Azure Database for MySQL - Flexible Server.
Vereisten
Een Azure-account met een actief abonnement.
Als u geen Azure-abonnement hebt, maakt u een gratis Azure-account voordat u begint. Op dit moment kunt u met een gratis Azure-account Azure Database for MySQL - Flexible Server 12 maanden gratis proberen. Zie Azure Database for MySQL - Flexible Server gratis uitproberen voor meer informatie.
Een Azure Database for MySQL Flexible Server-exemplaar. Als u een exemplaar van Azure Database for MySQL Flexible Server wilt maken, raadpleegt u Een exemplaar van Azure Database for MySQL Flexible Server maken met behulp van Azure Portal of een Exemplaar van Azure Database for MySQL Flexible Server maken met behulp van Azure CLI.
Uw clientwerkstation voorbereiden
- Als u een flexibele server hebt gemaakt met Persoonlijke toegang (VNet-integratie), moet u verbinding maken met uw server vanuit een resource binnen hetzelfde VNet als uw server. U kunt een virtuele machine maken en toevoegen aan het VNet dat is gemaakt met de flexibele server. Raadpleeg Een virtueel netwerk van Azure Database for MySQL Flexible Server maken en beheren met behulp van Azure CLI.
- Als u uw flexibele server met Openbare toegang (toegestane IP-adressen) hebt gemaakt, kunt u uw lokale IP-adres toevoegen aan de lijst met firewallregels op uw server. Zie Firewallregels voor Azure Database for MySQL Flexible Server maken met behulp van de Azure CLI.
Python en de MySQL-connector installeren
Installeer Python en de MySQL-connector voor Python op uw computer met behulp van de volgende stappen:
Notitie
In deze snelstart gebruikt u een onbewerkte SQL-query om verbinding te maken met MySQL. Als u een webframework gebruikt, moet u de aanbevolen connector voor deze frameworks gebruiken, zoals mysqlclient voor Django.
Download en installeer Python 3.7 of hoger voor uw besturingssysteem. Zorg ervoor dat u Python toevoegt aan uw
PATH
, omdat de MySQL-connector dat vereist.Open een opdrachtprompt of
bash
shell en controleer uw Python-versie doorpython -V
uit te voeren met de schakeloptie voor hoofdletter V.Het installatieprogramma voor het
pip
-pakket is opgenomen in de meest recente versies van Python. Werkpip
bij naar de nieuwste versie doorpip install -U pip
uit te voeren.Als
pip
niet is geïnstalleerd, kunt u het downloaden en installeren metget-pip.py
. Zie Installatie voor meer informatie.Gebruik
pip
om de MySQL-connector voor Python en de bijbehorende afhankelijkheden te installeren:pip install mysql-connector-python
U kunt ook de Python-connector voor MySQL installeren vanuit mysql.com. Voor meer informatie over de MySQL-connector voor python raadpleegt u de ontwikkelaarshandleiding voor MySQL/Python.
Verbindingsgegevens ophalen
Haal de verbindingsgegevens op die nodig zijn om verbinding te maken met de Azure Database for MySQL Flexible Server van de Azure-portal. U hebt de servernaam, databasenaam en aanmeldingsreferenties nodig.
Meld u aan bij het Azure-portaal.
Zoek en selecteer in de zoekbalk van de portal het Exemplaar van Azure Database for MySQL Flexible Server dat u hebt gemaakt, zoals mydemoserver.
Ga naar de pagina Overzicht van de server en noteer de Servernaam en de Aanmeldingsnaam van de serverbeheerder. Als u uw wachtwoord vergeet, kunt u het wachtwoord op deze pagina opnieuw instellen.
Codevoorbeelden
De hieronder genoemde Python-codevoorbeelden uitvoeren
Voor elk codevoorbeeld in dit artikel:
Maak een nieuw bestand in een teksteditor.
Voeg het codevoorbeeld toe aan het bestand. Vervang in de code de tijdelijke aanduidingen
<mydemoserver>
,<myadmin>
,<mypassword>
en<mydatabase>
door de waarden voor uw MySQL-server en -database.Sla het bestand op in een projectmap met de extensie .py, zoals C:\pythonmysql\createtable.py of /home/username/pythonmysql/createtable.py.
Als u de code wilt uitvoeren, opent u een opdrachtprompt of
bash
-shell en wijzigt u vervolgens de map in uw projectmap, bijvoorbeeldcd pythonmysql
. Typ depython
-opdracht, gevolgd door de bestandsnaam (bijvoorbeeldpython createtable.py
) en druk op Enter.Notitie
Als python.exe niet wordt gevonden, moet u in Windows mogelijk het volledige Python-pad naar de PATH-omgevingsvariabale opgeven, of het volledige pad naar python.exe opgeven, zoals
C:\python27\python.exe createtable.py
.
Een tabel maken en gegevens invoegen
Gebruik de volgende code om verbinding te maken met de server en database, een tabel te maken en gegevens te laden met behulp van de SQL-instructie INSERT.
De code importeert de bibliotheek mysql.connector en gebruikt de functie connect() om verbinding te maken met flexibele server met behulp van de argumenten in de config-verzameling. De code gebruikt een cursor voor de verbinding en de methode cursor.execute() voert de SQL-query uit op de MySQL-database.
import mysql.connector
from mysql.connector import errorcode
# Obtain connection string information from the portal
config = {
'host':'<mydemoserver>.mysql.database.azure.com',
'user':'<myadmin>',
'password':'<mypassword>',
'database':'<mydatabase>'
}
# Construct connection string
try:
conn = mysql.connector.connect(**config)
print("Connection established")
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with the user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
else:
cursor = conn.cursor()
# Drop previous table of same name if one exists
cursor.execute("DROP TABLE IF EXISTS inventory;")
print("Finished dropping table (if existed).")
# Create table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table.")
# Insert some data into table
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
print("Inserted",cursor.rowcount,"row(s) of data.")
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("orange", 154))
print("Inserted",cursor.rowcount,"row(s) of data.")
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("apple", 100))
print("Inserted",cursor.rowcount,"row(s) of data.")
# Cleanup
conn.commit()
cursor.close()
conn.close()
print("Done.")
Gegevens lezen
Gebruik de volgende code om verbinding te maken en de gegevens te lezen met behulp van de SQL-instructie SELECT.
De code importeert de bibliotheek mysql.connector en gebruikt de functie connect() om verbinding te maken met flexibele server met behulp van de argumenten in de config-verzameling. De code gebruikt een cursor voor de verbinding en de methode cursor.execute() voert de SQL-query uit op de MySQL-database.
De code leest de gegevensrijen met behulp van de methode fetchall(), bewaart de resultatenset in een verzamelingrij en gebruikt een for
-iterator om de rijen te doorlopen.
import mysql.connector
from mysql.connector import errorcode
# Obtain connection string information from the portal
config = {
'host':'<mydemoserver>.mysql.database.azure.com',
'user':'<myadmin>',
'password':'<mypassword>',
'database':'<mydatabase>'
}
# Construct connection string
try:
conn = mysql.connector.connect(**config)
print("Connection established")
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with the user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
else:
cursor = conn.cursor()
# Read data
cursor.execute("SELECT * FROM inventory;")
rows = cursor.fetchall()
print("Read",cursor.rowcount,"row(s) of data.")
# Print all rows
for row in rows:
print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))
# Cleanup
conn.commit()
cursor.close()
conn.close()
print("Done.")
Gegevens bijwerken
Gebruik de volgende code om verbinding te maken en de gegevens bij te werken met behulp van de SQL-instructie UPDATE.
De code importeert de bibliotheek mysql.connector en gebruikt de functie connect() om verbinding te maken met flexibele server met behulp van de argumenten in de config-verzameling. De code gebruikt een cursor voor de verbinding en de methode cursor.execute() voert de SQL-query uit op de MySQL-database.
import mysql.connector
from mysql.connector import errorcode
# Obtain connection string information from the portal
config = {
'host':'<mydemoserver>.mysql.database.azure.com',
'user':'<myadmin>',
'password':'<mypassword>',
'database':'<mydatabase>'
}
# Construct connection string
try:
conn = mysql.connector.connect(**config)
print("Connection established")
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with the user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
else:
cursor = conn.cursor()
# Update a data row in the table
cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (200, "banana"))
print("Updated",cursor.rowcount,"row(s) of data.")
# Cleanup
conn.commit()
cursor.close()
conn.close()
print("Done.")
Gegevens verwijderen
Gebruik de volgende code om verbinding te maken en de gegevens te verwijderen met behulp van de SQL-instructie DELETE.
De code importeert de bibliotheek mysql.connector en gebruikt de functie connect() om verbinding te maken met flexibele server met behulp van de argumenten in de config-verzameling. De code gebruikt een cursor voor de verbinding en de methode cursor.execute() voert de SQL-query uit op de MySQL-database.
import mysql.connector
from mysql.connector import errorcode
# Obtain connection string information from the portal
config = {
'host':'<mydemoserver>.mysql.database.azure.com',
'user':'<myadmin>',
'password':'<mypassword>',
'database':'<mydatabase>'
}
# Construct connection string
try:
conn = mysql.connector.connect(**config)
print("Connection established.")
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with the user name or password.")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist.")
else:
print(err)
else:
cursor = conn.cursor()
# Delete a data row in the table
cursor.execute("DELETE FROM inventory WHERE name=%(param1)s;", {'param1':"orange"})
print("Deleted",cursor.rowcount,"row(s) of data.")
# Cleanup
conn.commit()
cursor.close()
conn.close()
print("Done.")
Volgende stappen
- Versleutelde connectiviteit met TLS 1.2 (Transport Layer Security) in Azure Database for MySQL Flexible Server.
- Meer informatie over Netwerken in Azure Database for MySQL - Flexible Server.
- Firewallregels voor Azure Database for MySQL Flexible Server maken met behulp van de Azure-portal.
- Virtueel netwerk met Azure Database for MySQL Flexible Server maken met behulp van de Azure-portal.