Snabbstart: Använda Python för att ansluta och fråga efter data i Azure Database for MySQL
GÄLLER FÖR: Azure Database for MySQL – enskild server
Viktigt!
Azure Database for MySQL – enskild server är på väg att dras tillbaka. Vi rekommenderar starkt att du uppgraderar till en flexibel Azure Database for MySQL-server. Mer information om hur du migrerar till en flexibel Azure Database for MySQL-server finns i Vad händer med Azure Database for MySQL – enskild server?
I den här snabbstarten ansluter du till en Azure Database for MySQL med hjälp av Python. Sedan använder du SQL-instruktioner för att fråga, infoga, uppdatera och ta bort data i databasen från Mac-, Ubuntu Linux- och Windows-plattformar.
Förutsättningar
För den här snabbstarten behöver du:
Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
Skapa en enskild Azure Database for MySQL-server med Hjälp av Azure-portalen
eller Azure CLI om du inte har något.Baserat på om du använder offentlig eller privat åtkomst slutför du en av åtgärderna nedan för att aktivera anslutningen.
Åtgärd Anslutningsmetod Instruktionsguide Konfigurera brandväggsregler Publikt Portal
CLIKonfigurera tjänstslutpunkt Publikt Portal
CLIKonfigurera privat länk Privat Portal
CLI
Installera Python och MySQL Connector
Installera Python och MySQL-anslutningsappen för Python på datorn med hjälp av följande steg:
Kommentar
Den här snabbstarten använder Utvecklarguide för MySQL Anslut or/Python.
Ladda ned och installera Python 3.7 eller senare för operativsystemet. Se till att lägga till Python i ,
PATH
eftersom MySQL-anslutningsappen kräver det.Öppna en kommandotolk eller
bash
ett gränssnitt och kontrollera Python-versionen genom att körapython -V
med växeln versaler V.Paketinstallationsprogrammet
pip
ingår i de senaste versionerna av Python. Uppdaterapip
till den senaste versionen genom att körapip install -U pip
.Om
pip
inte är installerat kan du ladda ned och installera det medget-pip.py
. Mer information finns i Installation.Använd
pip
för att installera MySQL-anslutningsappen för Python och dess beroenden:pip install mysql-connector-python
Hämta anslutningsinformation
Hämta den anslutningsinformation du behöver för att ansluta till Azure Database for MySQL från Azure-portalen. Du behöver servernamn, databasnamn och inloggningsuppgifter.
Logga in på Azure-portalen.
I sökfältet i portalen söker du efter och väljer den Azure Database for MySQL-server som du skapade, till exempel mydemoserver.
På serverns översiktssida antecknar du servernamnet och inloggningsnamnet för serveradministratören. Om du glömmer lösenordet kan du även återställa lösenordet från den här sidan.
Köra Python-kodexemplen
För varje kodexempel i den här artikeln:
Skapa en ny fil i en textredigerare.
Lägg till kodexemplet i filen. I koden ersätter du
<mydemoserver>
platshållarna ,<myadmin>
,<mypassword>
och<mydatabase>
med värdena för mySQL-servern och databasen.SSL är aktiverat som standard på Azure Database for MySQL-servrar. Du kan behöva ladda ned DigiCertGlobalRootG2 SSL-certifikatet för att ansluta från din lokala miljö.
ssl_ca
Ersätt värdet i koden med sökvägen till den här filen på datorn.Spara filen i en projektmapp med filnamnstillägget .py , till exempel C:\pythonmysql\createtable.py eller /home/username/pythonmysql/createtable.py.
Om du vill köra koden öppnar du en kommandotolk eller
bash
ett gränssnitt och ändrar katalogen till projektmappen, till exempelcd pythonmysql
.python
Skriv kommandot följt av filnamnet, till exempelpython createtable.py
, och tryck på Retur.Kommentar
Om python.exe inte hittas i Windows kan du behöva lägga till Python-sökvägen i path-miljövariabeln eller ange den fullständiga sökvägen till python.exe, till exempel
C:\python27\python.exe createtable.py
.
Steg 1: Skapa en tabell och infoga data
Använd följande kod för att ansluta till servern och databasen, skapa en tabell och läsa in data med hjälp av en INSERT SQL-instruktion . Koden importerar biblioteket mysql.connector och använder metoden:
- connect() för att ansluta till Azure Database for MySQL med hjälp av argumenten i konfigurationssamlingen.
- cursor.execute() -metoden kör SQL-frågan mot MySQL-databasen.
- cursor.close() när du är klar med en markör.
- conn.close() för att stänga anslutningen.
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.")
Steg 2: Läsa data
Använd följande kod för att ansluta och läsa data med en SELECT-SQL-instruktion. Koden importerar biblioteket mysql.connector och använder metoden cursor.execute() och kör SQL-frågan mot MySQL-databasen.
Koden läser dataraderna med metoden fetchall(), behåller resultatuppsättningen på en samlingsrad och använder en for
iterator för att loopa över raderna.
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.")
Steg 3: Uppdatera data
Använd följande kod för att ansluta och uppdatera data med en UPDATE-SQL-instruktion. Koden importerar biblioteket mysql.connector och använder metoden cursor.execute() och kör SQL-frågan mot MySQL-databasen.
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.")
Steg 4: Ta bort data
Använd följande kod för att ansluta och ta bort data med en DELETE-SQL-instruktion. Koden importerar biblioteket mysql.connector och använder metoden cursor.execute() och kör SQL-frågan mot MySQL-databasen.
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.")
Rensa resurser
Om du vill rensa alla resurser som används under den här snabbstarten tar du bort resursgruppen med följande kommando:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes