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:
Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
Önálló Azure Database for MySQL-kiszolgáló létrehozása az Azure Portal használatával
vagy az Azure CLI-t , ha nincs ilyenje.Attól függően, hogy nyilvános vagy privát hozzáférést használ-e, végezze el az alábbi műveletek egyikét a kapcsolat engedélyezéséhez.
Művelet Kapcsolati mód Útmutató Tűzfalszabályok konfigurálása Nyilvános Portál
Parancssori felületSzolgáltatásvégpont konfigurálása Nyilvános Portál
Parancssori felületPrivát hivatkozás konfigurálása Személyes Portál
Parancssori felület
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:
Feljegyzés
Ez a rövid útmutató a MySQL Connector/Python fejlesztői útmutatót használja.
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
PATH
fiókjába, mert ehhez a MySQL-összekötő szükséges.Nyisson meg egy parancssort vagy
bash
rendszerhéjat, és ellenőrizze a Python-verziót a nagybetűs V kapcsolóval.python -V
A
pip
csomagtelepítő a Python legújabb verzióiban érhető el. Frissítsenpip
a legújabb verzióra a futtatássalpip install -U pip
.Ha
pip
nincs telepítve, letöltheti és telepítheti a fájllalget-pip.py
. További információ: Telepítés.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.
Jelentkezzen be az Azure Portalra.
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.
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.
A Python-kódminták futtatása
A cikkben szereplő minden kód példánál:
Hozzon létre egy új fájlt egy szövegszerkesztőben.
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.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.Mentse a fájlt egy projektmappába egy .py kiterjesztéssel, például C:\pythonmysql\createtable.py vagy /home/username/pythonmysql/createtable.py.
A kód futtatásához nyisson meg egy parancssort vagy
bash
egy rendszerhéjat, és módosítsa példáulcd pythonmysql
a könyvtárat a projektmappába. Írja be apython
parancsot, majd a fájl nevét, példáulpython createtable.py
, és nyomja le az Enter billentyűt.Feljegyzés
Windows rendszeren, ha 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 a python.exe teljes elérési útját, például
C:\python27\python.exe createtable.py
.
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 INSERT SQL utasítással. A kód importálja a mysql.connector kódtárat, és a következő módszert használja:
- connect() függvényt az Azure Database for MySQL-hez való csatlakozáshoz a konfigurációs gyűjtemény argumentumai alapján.
- A cursor.execute() metódus végrehajtja az SQL-lekérdezést a MySQL-adatbázison.
- cursor.close() parancsot, ha végzett a kurzor használatával.
- conn.close() a kapcsolat bezárásához.
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.")
Az erőforrások eltávolítása
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