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 sunucuya 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 esnek MySQL için Azure Veritabanı sunucuyla ç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ı 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 .

  1. İşletim sisteminiz için Python 3.7 veya üzerini indirip yükleyin. MySQL bağlayıcısı bunu gerektirdiğinden Python'ınıza PATHeklediğinizden emin olun.

  2. Bir komut istemi veya bash kabuk açın ve büyük harf V anahtarıyla çalıştırarak python -V Python sürümünüzü denetleyin.

  3. Paket pip yükleyicisi, Python'ın en son sürümlerine dahil edilir. komutunu çalıştırarak pip install -U pipen son sürüme güncelleştirinpip.

    Yüklü değilse pip , ile get-pip.pyindirip yükleyebilirsiniz. Daha fazla bilgi için bkz . Yükleme.

  4. 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 esnek MySQL için Azure Veritabanı sunucuya 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.

  1. Azure Portal’ında oturum açın.

  2. Portal arama çubuğunda mydemoserver gibi oluşturduğunuz MySQL için Azure Veritabanı esnek sunucu örneğini arayın ve seçin.

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

  1. Metin düzenleyicisinde yeni bir dosya oluşturun.

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

  3. Dosyayı C:\pythonmysql\createtable.py veya /home/username/pythonmysql/createtable.py gibi .py uzantısına sahip bir proje klasörüne kaydedin.

  4. 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ğin cd pythonmysql. Komutu yazın python ve ardından dosya adını (örneğin python 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ğinC:\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