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 flexibel Azure Database for MySQL-server 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.

Den här artikeln förutsätter att du är bekant med att utveckla med Python, men du är nybörjare på att arbeta med Azure Database for MySQL – flexibel server.

Förutsättningar

Förbereda klientarbetsstationen

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 en rå SQL-frågemetod 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.

  1. Ladda ned och installera Python 3.7 eller senare för operativsystemet. Se till att lägga till Python i , PATHeftersom MySQL-anslutningsappen kräver det.

  2. Öppna en kommandotolk eller bash ett gränssnitt och kontrollera Python-versionen genom att köra python -V med växeln versaler V.

  3. Paketinstallationsprogrammet pip ingår i de senaste versionerna av Python. Uppdatera pip till den senaste versionen genom att köra pip install -U pip.

    Om pip inte är installerat kan du ladda ned och installera det med get-pip.py. Mer information finns i Installation.

  4. Använd pip för att installera MySQL-anslutningsappen för Python och dess beroenden:

    pip install mysql-connector-python
    

    Du kan också installera Python-anslutningsappen för MySQL från mysql.com. Mer information om MySQL-Anslut eller för Python finns i utvecklarhandboken för MySQL Anslut or/Python.

Hämta anslutningsinformation

Hämta den anslutningsinformation som du behöver för att ansluta till en flexibel Azure Database for MySQL-server från Azure-portalen. Du behöver servernamnet, databasnamnet och inloggningsuppgifterna.

  1. Logga in på Azure-portalen.

  2. I portalens sökfält söker du efter och väljer den flexibla serverinstansen Azure Database for MySQL som du skapade, till exempel mydemoserver.

  3. 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.

Kodexempel

Kör nedanstående Python-kodexempel

För varje kodexempel i den här artikeln:

  1. Skapa en ny fil i en textredigerare.

  2. 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.

  3. Spara filen i en projektmapp med ett .py-tillägg , till exempel C:\pythonmysql\createtable.py eller /home/username/pythonmysql/createtable.py.

  4. Om du vill köra koden öppnar du en kommandotolk eller bash ett gränssnitt och ändrar katalogen till projektmappen, till exempel cd pythonmysql. python Skriv kommandot följt av filnamnet, till exempel python 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.

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 hjälp av 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 hjälp av 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 hjälp av 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 hjälp av 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