Rövid útmutató: Adatok csatlakoztatása és lekérdezése a Python használatával az Azure Database for MySQL-ben

A következőkre vonatkozik: Azure Database for MySQL – Önálló kiszolgáló

Fontos

Az önálló Azure Database for MySQL-kiszolgáló a kivonási útvonalon van. Határozottan javasoljuk, hogy frissítsen rugalmas Azure Database for MySQL-kiszolgálóra. További információ a rugalmas Azure Database for MySQL-kiszolgálóra való migrálásról: Mi történik az önálló Azure Database for MySQL-kiszolgálóval?

Ebben a rövid útmutatóban a Python használatával csatlakozhat egy Azure Database for MySQL-hez. Ezután SQL-utasításokkal lekérdezheti, beszúrhatja, frissítheti és törölheti az adatbázisban lévő adatokat Mac, Ubuntu Linux és Windows platformokról.

Előfeltételek

Ehhez a rövid útmutatóhoz a következőkre van szüksége:

A Python és a MySQL-összekötő telepítése

Telepítse a Pythont és a Python MySQL-összekötőt a számítógépre az alábbi lépések végrehajtásával:

Megjegyzés:

Ez a rövid útmutató a MySQL Csatlakozás or/Python fejlesztői útmutatót használja.

  1. Töltse le és telepítse a Python 3.7-et vagy újabb verziót az operációs rendszerhez. Mindenképpen vegye fel a Pythont a saját PATHfiókjába, mert ehhez a MySQL-összekötő szükséges.

  2. Nyisson meg egy parancssort vagy bash rendszerhéjat, és ellenőrizze a Python-verziót a nagybetűs V kapcsolóval.python -V

  3. A pip csomagtelepítő a Python legújabb verzióiban érhető el. Frissítsen pip a legújabb verzióra a futtatással pip install -U pip.

    Ha pip nincs telepítve, letöltheti és telepítheti a fájllal get-pip.py. További információ: Telepítés.

  4. A Python mySQL-összekötőjének és függőségeinek telepítéséhez használható pip :

    pip install mysql-connector-python
    

Kapcsolatadatok lekérése

Kérje le az Azure Database for MySQL-hez való csatlakozáshoz szükséges kapcsolati adatokat az Azure Portalról. Szüksége van a kiszolgáló nevére, az adatbázis nevére és a bejelentkezési hitelesítő adatokra.

  1. Jelentkezzen be az Azure Portalra.

  2. A portál keresősávján keresse meg és válassza ki a létrehozott Azure Database for MySQL-kiszolgálót, például a mydemoservert.

    Azure Database for MySQL server name

  3. A kiszolgáló Áttekintés lapján jegyezze fel a kiszolgáló nevét és a kiszolgáló rendszergazdai bejelentkezési nevét. Ha elfelejti a jelszavát, ezen a lapon is alaphelyzetbe állíthatja a jelszót.

    Azure Database for MySQL server name 2

A Python-kódminták futtatása

A cikkben szereplő minden kód példánál:

  1. Hozzon létre egy új fájlt egy szövegszerkesztőben.

  2. Adja hozzá a példakódot a fájlhoz. A kódban cserélje le a <mydemoserver>, <myadmin>, <mypassword>és <mydatabase> helyőrzőket a MySQL-kiszolgáló és az adatbázis értékeire.

  3. Az SSL alapértelmezés szerint engedélyezve van az Azure Database for MySQL-kiszolgálókon. Előfordulhat, hogy le kell töltenie a DigiCertGlobalRootG2 SSL-tanúsítványt a helyi környezetből való csatlakozáshoz. Cserélje le a ssl_ca kód értékét a fájl elérési útjára a számítógépen.

  4. Mentse a fájlt egy .py kiterjesztésű projektmappába, például C:\pythonmysql\createtable.py vagy /home/username/pythonmysql/createtable.py.

  5. A kód futtatásához nyisson meg egy parancssort vagy bash egy rendszerhéjat, és módosítsa például cd pythonmysqla könyvtárat a projektmappába. Írja be a python parancsot, majd a fájl nevét, például python createtable.py, és nyomja le az Enter billentyűt.

    Megjegyzés:

    Windows rendszeren, ha a python.exe nem található, előfordulhat, hogy hozzá kell adnia a Python-elérési utat a PATH környezeti változóhoz, vagy meg kell adnia például C:\python27\python.exe createtable.pya python.exe teljes elérési útját.

1. lépés: Tábla létrehozása és adatok beszúrása

A következő kóddal csatlakozhat a kiszolgálóhoz és az adatbázishoz, létrehozhat egy táblát, és adatokat tölthet be egy IN Standard kiadás RT SQL-utasítással. A kód importálja a mysql.connector kódtárat, és a következő módszert használja:

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.")

2. lépés: Adatok olvasása

A következő kóddal csatlakozhat, és beolvashatja az adatokat a SELECT SQL-utasítással. A kód importálja a mysql.connector kódtárat, és a cursor.execute() metódussal végrehajtja az SQL-lekérdezést a MySQL-adatbázison.

A kód beolvassa az adatsorokat a fetchall() metódussal, megtartja az eredményhalmazt egy gyűjteménysorban, és egy iterátor használatával hurkot hoz for létre a sorok között.

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.")

3. lépés: Adatok frissítése

Az alábbi kód használatával csatlakozhat és végezheti el az adatok módosítását egy UPDATE SQL-utasítás segítségével. A kód importálja a mysql.connector kódtárat, és a cursor.execute() metódussal végrehajtja az SQL-lekérdezést a MySQL-adatbázison.

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.")

4. lépés: Adatok törlése

A következő kód használatával csatlakozhat, és eltávolíthatja az adatokat a DELETE SQL-utasítással. A kód importálja a mysql.connector kódtárat, és a cursor.execute() metódussal végrehajtja az SQL-lekérdezést a MySQL-adatbázison.

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.")  

Clean up resources

A rövid útmutató során használt összes erőforrás törléséhez törölje az erőforráscsoportot az alábbi paranccsal:

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes

További lépések