Hızlı Başlangıç: MySQL için Azure Veritabanı'da verileri bağlamak ve sorgulamak için Python kullanma
ŞUNLAR IÇIN GEÇERLIDIR: MySQL için Azure Veritabanı - Tek Sunucu
Önemli
MySQL için Azure Veritabanı tek sunucu kullanımdan kaldırma yolundadır. Esnek MySQL için Azure Veritabanı sunucuya yükseltmenizi kesinlikle öneririz. MySQL için Azure Veritabanı esnek sunucuya geçiş hakkında daha fazla bilgi için bkz. MySQL için Azure Veritabanı Tek Sunucu'ya neler oluyor?
Bu hızlı başlangıçta Python kullanarak bir MySQL için Azure Veritabanı bağlanacaksınız. Ardından SQL deyimlerini kullanarak Mac, Ubuntu Linux ve Windows platformlarındaki veritabanındaki verileri sorgular, ekler, güncelleştirir ve silersiniz.
Önkoşullar
Bu hızlı başlangıç için ihtiyacınız olan:
Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
Azure portalını kullanarak MySQL için Azure Veritabanı tek sunucu oluşturma
veya Azure CLI'nız yoksa.Genel veya özel erişim kullanıp kullanmadığınıza bağlı olarak, bağlantıyı etkinleştirmek için aşağıdaki eylemlerden BIRINI tamamlayın.
Eylem Bağlantı yöntemi Nasıl yapılır kılavuzu Güvenlik duvarı kurallarını yapılandırma Sunulabilir Portal
CLIHizmet Uç Noktasını Yapılandırma Sunulabilir Portal
CLIÖzel bağlantıyı yapılandırma Özel Portal
CLI
Python’u ve MySQL bağlayıcısını yükleme
Aşağıdaki adımları kullanarak Bilgisayarınıza Python ve Python için MySQL bağlayıcısını yükleyin:
Dekont
Bu hızlı başlangıçta MySQL Bağlan or/Python Geliştirici Kılavuzu kullanılır.
İşletim sisteminiz için Python 3.7 veya üzerini indirip yükleyin. MySQL bağlayıcısı bunu gerektirdiğinden Python'ınıza
PATH
eklediğinizden emin olun.Bir komut istemi veya
bash
kabuk açın ve büyük harf V anahtarıyla çalıştırarakpython -V
Python sürümünüzü denetleyin.Paket
pip
yükleyicisi, Python'ın en son sürümlerine dahil edilir. komutunu çalıştırarakpip install -U pip
en son sürüme güncelleştirinpip
.Yüklü değilse
pip
, ileget-pip.py
indirip yükleyebilirsiniz. Daha fazla bilgi için bkz . Yükleme.Python ve bağımlılıkları için MySQL bağlayıcısını yüklemek için kullanın
pip
:pip install mysql-connector-python
Bağlantı bilgilerini alma
Azure portalından MySQL için Azure Veritabanı bağlanmak için ihtiyacınız olan bağlantı bilgilerini alın. Sunucu adına, veritabanı adına ve oturum açma kimlik bilgilerine ihtiyacınız vardır.
Azure Portal oturum açın.
Portal arama çubuğunda, oluşturduğunuz mydemoserver gibi MySQL için Azure Veritabanı sunucusunu arayın ve seçin.
Sunucunun Genel Bakış sayfasında Sunucu adını ve Sunucu yöneticisi oturum açma adını not edin. Parolanızı unutursanız, parolayı bu sayfadan da sıfırlayabilirsiniz.
Python kod örneklerini çalıştırma
Bu makaledeki her kod örneği için:
Metin düzenleyicisinde yeni bir dosya oluşturun.
Kod örneğini dosyaya ekleyin. Kodda ,
<myadmin>
,<mypassword>
ve<mydatabase>
yer tutucularını MySQL sunucunuzun ve veritabanınızın değerleriyle değiştirin<mydemoserver>
.SSL, MySQL için Azure Veritabanı sunucularda varsayılan olarak etkindir. Yerel ortamınızdan bağlanmak için DigiCertGlobalRootG2 SSL sertifikasını indirmeniz gerekebilir.
ssl_ca
Koddaki değeri bilgisayarınızdaki bu dosyanın yoluyla değiştirin.Dosyayı C:\pythonmysql\createtable.py veya /home/username/pythonmysql/createtable.py gibi bir .py uzantısına sahip bir proje klasörüne kaydedin.
Kodu çalıştırmak için bir komut istemi veya
bash
kabuk açın ve dizini proje klasörünüzle değiştirin, örneğincd pythonmysql
. Komutu yazınpython
ve ardından dosya adını (örneğinpython createtable.py
) yazın ve Enter tuşuna basın.Dekont
Windows'da python.exe bulunamazsa, PATH ortam değişkeninize Python yolunu eklemeniz veya python.exe dosyasının tam yolunu sağlamanız gerekebilir. Örneğin
C:\python27\python.exe createtable.py
.
1. Adım: Tablo oluşturma ve veri ekleme
Sunucuya ve veritabanına bağlanmak, tablo oluşturmak ve INSERT SQL deyimini kullanarak veri yüklemek için aşağıdaki kodu kullanın. Kod mysql.connector kitaplığını içeri aktarır ve yöntemini kullanır:
- yapılandırma koleksiyonundaki bağımsız değişkenleri kullanarak MySQL için Azure Veritabanı bağlanmak için connect() işlevi.
- cursor.execute() yöntemi SQL sorgusunu MySQL veritabanına karşı yürütür.
- İmleç kullanmayı bitirdiğinizde cursor.close() .
- conn.close() ile bağlantıyı kapatın.
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. Adım: Verileri okuma
Bağlanmak ve SELECT SQL deyimi kullanarak verileri okumak için aşağıdaki kodu kullanın. Kod mysql.connector kitaplığını içeri aktarır ve cursor.execute() yöntemini kullanır ve SQL sorgusunu MySQL veritabanına karşı yürütür.
Kod fetchall() yöntemini kullanarak veri satırlarını okur, sonuç kümesini bir koleksiyon satırında tutar ve satırları döngüye almak için yineleyici for
kullanır.
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. Adım: Verileri güncelleştirme
Bağlanmak ve bir UPDATE SQL deyimi kullanarak verileri güncelleştirmek için aşağıdaki kodu kullanın. Kod mysql.connector kitaplığını içeri aktarır ve cursor.execute() yöntemini kullanır ve SQL sorgusunu MySQL veritabanına karşı yürütür.
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. Adım: Verileri silme
Bağlanmak ve DELETE SQL deyimini kullanarak verileri kaldırmak için aşağıdaki kodu kullanın. Kod mysql.connector kitaplığını içeri aktarır ve cursor.execute() yöntemini kullanır ve SQL sorgusunu MySQL veritabanına karşı yürütür.
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.")
Kaynakları temizleme
Bu hızlı başlangıç sırasında kullanılan tüm kaynakları temizlemek için aşağıdaki komutu kullanarak kaynak grubunu silin:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes