Quickstart: Python gebruiken om verbinding te maken met en query's uit te voeren op gegevens in Azure Database for MySQL
VAN TOEPASSING OP: Azure Database for MySQL - enkele server
Belangrijk
Azure Database for MySQL enkele server bevindt zich op het buitengebruikstellingspad. We raden u ten zeerste aan een upgrade uit te voeren naar een flexibele Azure Database for MySQL-server. Zie Wat gebeurt er met Azure Database for MySQL Enkele server voor meer informatie over migreren naar Azure Database for MySQL Flexibele server ?
In deze quickstart maakt u verbinding met een Azure Database for MySQL 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.
Vereisten
Voor deze quickstart hebt u het volgende nodig:
Een Azure-account met een actief abonnement. Gratis een account maken
Eén Azure Database for MySQL-server maken met behulp van Azure Portal
of Azure CLI, als u er nog geen hebt.Voltooi EEN van de onderstaande acties om connectiviteit in te schakelen, afhankelijk van of u openbare toegang of privétoegang hebt.
Actie Verbindingsmethode Instructiegids Firewallregels configureren Openbaar Portal
CLIService-eindpunt configureren Openbaar Portal
CLIPrivékoppeling configureren Privé Portal
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 quickstart wordt MySQL Connector/Python Developer Guide gebruikt.
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
Verbindingsgegevens ophalen
Haal de verbindingsgegevens op die nodig zijn om verbinding te maken met de Azure Database for MySQL van de Azure-portal. U hebt de servernaam, databasenaam en aanmeldingsreferenties nodig.
Meld u aan bij het Azure-portaal.
Zoek en selecteer in de portalzoekbalk de Azure Database for MySQL server die 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.
De 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.SSL is standaard ingeschakeld op Azure Database for MySQL-servers. Mogelijk moet u het SSL-certificaat DigiCertGlobalRootG2 downloaden om verbinding te maken vanuit uw lokale omgeving. Vervang de
ssl_ca
waarde in de code door het pad naar dit bestand op uw computer.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
.
Stap 1: 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. Met de code importeert u de bibliotheek mysql.connector en wordt de volgende methode gebruikt:
- functie connect() om verbinding te maken met Azure Database for MySQL, met behulp van de argumenten in de config-verzameling.
- met de methode cursor.execute wordt de SQL-query uitgevoerd op de MySQL-database.
- cursor.close() wanneer u klaar bent met een cursor.
- conn.close() om de verbinding met de verbinding te verbreken.
import mysql.connector
from mysql.connector import errorcode
# Obtain connection string information from the portal
config = {
'host':'<mydemoserver>.mysql.database.azure.com',
'user':'<myadmin>@<mydemoserver>',
'password':'<mypassword>',
'database':'<mydatabase>',
'client_flags': [mysql.connector.ClientFlag.SSL],
'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}
# 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.")
Stap 2: Gegevens lezen
Gebruik de volgende code om verbinding te maken en de gegevens te lezen met behulp van de SQL-instructie SELECT. Met de code importeert u de bibliotheek mysql.connector en met de methode cursor.execute() wordt de SQL-query uitgevoerd 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>@<mydemoserver>',
'password':'<mypassword>',
'database':'<mydatabase>',
'client_flags': [mysql.connector.ClientFlag.SSL],
'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}
# 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.")
Stap 3: Gegevens bijwerken
Gebruik de volgende code om verbinding te maken en de gegevens bij te werken met behulp van de SQL-instructie UPDATE. Met de code importeert u de bibliotheek mysql.connector en met de methode cursor.execute() wordt de SQL-query uitgevoerd 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>@<mydemoserver>',
'password':'<mypassword>',
'database':'<mydatabase>',
'client_flags': [mysql.connector.ClientFlag.SSL],
'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}
# 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;", (300, "apple"))
print("Updated",cursor.rowcount,"row(s) of data.")
# Cleanup
conn.commit()
cursor.close()
conn.close()
print("Done.")
Stap 4: Gegevens verwijderen
Gebruik de volgende code om verbinding te maken en de gegevens te verwijderen met behulp van de SQL-instructie DELETE. Met de code importeert u de bibliotheek mysql.connector en met de methode cursor.execute() wordt de SQL-query uitgevoerd 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>@<mydemoserver>',
'password':'<mypassword>',
'database':'<mydatabase>',
'client_flags': [mysql.connector.ClientFlag.SSL],
'ssl_ca': '<path-to-SSL-cert>/DigiCertGlobalRootG2.crt.pem'
}
# 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.")
Resources opschonen
Als u alle resources wilt opschonen die tijdens deze quickstart zijn gebruikt, verwijdert u de resourcegroep. Dit kan met de volgende opdracht:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes