Hızlı Başlangıç: MySQL için Azure Veritabanı - Esnek Sunucu'da verileri bağlamak ve sorgulamak için Python kullanma
ŞUNLAR IÇIN GEÇERLIDIR: MySQL için Azure Veritabanı - Esnek Sunucu
Bu hızlı başlangıçta Python kullanarak MySQL için Azure Veritabanı Esnek Sunucu'ya 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.
Bu makalede Python kullanarak geliştirme konusunda bilgi sahibi olduğunuz ancak MySQL için Azure Veritabanı Esnek Sunucu ile çalışmaya yeni olduğunuz varsayılır.
Önkoşullar
Etkin aboneliği olan bir Azure hesabı.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir Azure hesabı oluşturun. Şu anda ücretsiz Azure hesabıyla 12 ay boyunca MySQL için Azure Veritabanı - Esnek Sunucu ücretsiz sürümünü deneyebilirsiniz. Daha fazla bilgi için bkz. MySQL için Azure Veritabanı - Esnek Sunucuyu ücretsiz deneyin.
MySQL için Azure Veritabanı Esnek Sunucu örneği. MySQL için Azure Veritabanı Esnek Sunucu örneği oluşturmak için Bkz. Azure portalını kullanarak MySQL için Azure Veritabanı Esnek Sunucu örneği oluşturma veya Azure CLI kullanarak MySQL için Azure Veritabanı Esnek Sunucu örneği oluşturma.
İstemci iş istasyonunuzu hazırlama
- Esnek sunucunuzu Özel erişim (VNet Tümleştirmesi) ile oluşturduysanız, sunucunuzla aynı sanal ağ içindeki bir kaynaktan sunucunuza bağlanmanız gerekir. Bir sanal makine oluşturabilir ve esnek sunucunuzla oluşturulan sanal ağa ekleyebilirsiniz. Azure CLI kullanarak MySQL için Azure Veritabanı Esnek Sunucu sanal ağı oluşturma ve yönetme bölümüne bakın.
- Esnek sunucunuzu Genel erişimle (izin verilen IP adresleri) oluşturduysanız, yerel IP adresinizi sunucunuzdaki güvenlik duvarı kuralları listesine ekleyebilirsiniz. Azure CLI kullanarak MySQL için Azure Veritabanı Esnek Sunucu güvenlik duvarı kurallarını oluşturma ve yönetme bölümüne bakın.
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:
Not
Bu hızlı başlangıçta, MySQL'e bağlanmak için ham sql sorgu yaklaşımı kullanılır. Web çerçevesi kullanıyorsanız, çerçeve için önerilen bağlayıcıyı kullanın; örneğin, Django için mysqlclient .
İş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
MySQL için Python bağlayıcısını mysql.com'dan da yükleyebilirsiniz. Python için MySQL Bağlayıcısı hakkında daha fazla bilgi için bkz . MySQL Bağlayıcısı/Python Geliştirici Kılavuzu.
Bağlantı bilgilerini alma
Azure portalından MySQL için Azure Veritabanı Esnek Sunucu'ya 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’ında oturum açın.
Portal arama çubuğunda mydemoserver gibi oluşturduğunuz MySQL için Azure Veritabanı Esnek Sunucu örneğini 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.
Kod örnekleri
Aşağıda belirtilen Python kod örneklerini çalıştırın
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>
.Dosyayı C:\pythonmysql\createtable.py veya /home/username/pythonmysql/createtable.py gibi .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.Not
Windows'ta python.exe bulunamazsa, PATH ortam değişkeninize Python yolunu eklemeniz veya python.exe tam yolunu sağlamanız gerekebilir, örneğin
C:\python27\python.exe createtable.py
.
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 yapılandırma koleksiyonundaki bağımsız değişkenleri kullanarak esnek sunucuya bağlanmak için connect() işlevini kullanır. Kod bağlantı üzerinde bir imleç kullanır ve cursor.execute() yöntemi 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>',
'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.")
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 yapılandırma koleksiyonundaki bağımsız değişkenleri kullanarak esnek sunucuya bağlanmak için connect() işlevini kullanır. Kod bağlantı üzerinde bir imleç kullanır ve cursor.execute() yöntemi 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>',
'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.")
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 yapılandırma koleksiyonundaki bağımsız değişkenleri kullanarak esnek sunucuya bağlanmak için connect() işlevini kullanır. Kod bağlantı üzerinde bir imleç kullanır ve cursor.execute() yöntemi 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>',
'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.")
Veri 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 yapılandırma koleksiyonundaki bağımsız değişkenleri kullanarak esnek sunucuya bağlanmak için connect() işlevini kullanır. Kod bağlantı üzerinde bir imleç kullanır ve cursor.execute() yöntemi 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>',
'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.")
Sonraki adımlar
- MySQL için Azure Veritabanı Esnek Sunucu'da Aktarım Katmanı Güvenliği (TLS 1.2) kullanılarak şifrelenmiş bağlantı.
- MySQL için Azure Veritabanı Esnek Sunucuda Ağ oluşturma hakkında daha fazla bilgi edinin.
- Azure portalını kullanarak MySQL için Azure Veritabanı Esnek Sunucu güvenlik duvarı kuralları oluşturun ve yönetin.
- Azure portalını kullanarak MySQL için Azure Veritabanı Esnek Sunucu sanal ağı oluşturun ve yönetin.