Snabbstart: Använda Python för att ansluta och fråga efter data i Azure Database for MySQL – flexibel server
[GÄLLER FÖR:
Azure Database for MySQL – flexibel server
I den här snabbstarten ansluter du till en Azure Database for MySQL flexibel server med hjälp av Python. Sedan använder du SQL-uttryck för att fråga, infoga, uppdatera och ta bort data i databasen från Mac, Ubuntu Linux och Windows plattformar.
Den här artikeln förutsätter att du är van att utveckla med Python, men du har inte arbetat med Azure Database for MySQL flexibel server.
Förutsättningar
Ett Azure-konto med en aktiv prenumeration.
Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt Azure-konto innan du börjar. Med ett kostnadsfritt Azure-konto kan du nu prova Azure Database for MySQL – flexibel server kostnadsfritt i 12 månader. Mer information finns i Prova flexibel server utan kostnad.
En Azure Database for MySQL flexibel server. Om du vill skapa en flexibel server kan du gå till Skapa en Azure Database for MySQL flexibel server med hjälp av Azure Portal eller Skapa en Azure Database for MySQL flexibel server med Azure CLI.
Förbereda klientarbetsstationen
- Om du har skapat din flexibla server med privat åtkomst (VNet-integrering) måste du ansluta till servern från en resurs inom samma VNet som servern. Du kan skapa en virtuell dator och lägga till den i det virtuella nätverk som skapats med din flexibla server. Se Skapa och hantera virtuella Azure Database for MySQL Flexibel server med Azure CLI.
- Om du har skapat din flexibla server med offentlig åtkomst (tillåtna IP-adresser) kan du lägga till din lokala IP-adress i listan över brandväggsregler på servern. Se Skapa och hantera brandväggsregler Azure Database for MySQL flexibel server med hjälp av Azure CLI.
Installera Python och MySQL Connector
Installera Python och MySQL-anslutningsappen för Python på datorn med hjälp av följande steg:
Anteckning
Den här snabbstarten använder en rå SQL för att ansluta till MySQL. Om du använder ett webbramverk använder du den rekommenderade anslutningsappen för ramverket, till exempel mysqlclient för Django.
Ladda ned och installera Python 3.7 eller högre för ditt operativsystem. Se till att lägga till Python i
PATHdin , eftersom MySQL-anslutningsappen kräver det.Öppna en kommandotolk
basheller ett gränssnitt och kontrollera Din Python-version genom att köra medpython -Vväxeln V i versaler.Installationsprogrammet
pipför paketet ingår i de senaste versionerna av Python. Uppdaterapiptill den senaste versionen genom att körapip install -U pip.Om
pipinte är installerat kan du ladda ned och installera det medget-pip.py. Mer information finns i Installation.Använd
pipför att installera MySQL-anslutningsappen för Python och dess beroenden:pip install mysql-connector-pythonDu kan också installera Python-anslutningsappen för MySQL från mysql.com. Mer information om MySQL Connector för Python finns i utvecklarhandboken för MySQL Connector/Python.
Hämta anslutningsinformation
Hämta anslutningsinformationen som du behöver för att ansluta Azure Database for MySQL flexibel server från Azure Portal. Du behöver servernamnet, databasnamnet och inloggningsuppgifterna.
Logga in på Azure-portalen.
I portalens sökfält söker du efter och väljer Azure Database for MySQL flexibel server som du skapade, till exempel mydemoserver.
På serverns översiktssida noterar 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.
Kodexempel
Kör nedanstående Python-kodexempel
För varje kodexempel i den här artikeln:
Skapa en ny fil i en textredigerare.
Lägg till kodexe exemplet i filen. I koden ersätter du
<mydemoserver><myadmin>platshållarna , , och med värdena för<mypassword><mydatabase>MySQL-servern och databasen.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
basheller ett gränssnitt och ändrar katalogen till projektmappen, till exempelcd pythonmysql. Skriv kommandotpythonföljt av filnamnet, till exempelpython createtable.py, och tryck på Retur.Anteckning
Om Windows påpython.exe inte hittas kan du behöva lägga till Python-sökvägen i path-miljövariabeln eller ange den fullständiga sökvägen tillpython.exe, till exempel
C:\python27\python.exe createtable.py.
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 funktionen connect() för att ansluta till en flexibel server med argumenten i konfigurationssamlingen. Koden använder en markör på anslutningen och metoden cursor.execute() 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>',
'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.")
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 funktionen connect() för att ansluta till en flexibel server med argumenten i konfigurationssamlingen. Koden använder en markör på anslutningen och metoden cursor.execute() 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>',
'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.")
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 funktionen connect() för att ansluta till en flexibel server med argumenten i konfigurationssamlingen. Koden använder en markör på anslutningen och metoden cursor.execute() 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>',
'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.")
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 funktionen connect() för att ansluta till en flexibel server med argumenten i konfigurationssamlingen. Koden använder en markör på anslutningen och metoden cursor.execute() 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>',
'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.")
Nästa steg
- Krypterad anslutning med Transport Layer Security (TLS 1.2) i Azure Database for MySQL – flexibel server.
- Läs mer om nätverk i Azure Database for MySQL Flexibel server.
- Skapa och hantera Azure Database for MySQL regler för flexibel server med hjälp av Azure Portal.
- Skapa och hantera virtuella Azure Database for MySQL Flexible Server med hjälp av Azure Portal.