iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0
自我挑戰組

第12 屆IT鐵人賽 -Python新手玩玩Web應用系列 第 12

{Day 12}Python on Microsoft Azure cloud service

  • 分享至 

  • xImage
  •  

第12章 Python meet Azure cloud service

??雲應用是近幾年來熱門的名詞,用白話說明的話,就是一台或N台伺服器架設在某個大型機房,提供了各種儲存資料,數據計算及網路服務.

而我們此次的30天專題,Flask 就是利用一台伺服器及雲端提供的子網域,讓我們在每天可以利用它為自己的工作寫個小小的隨身記錄.

目前大家比較會去使用的雲端服務的大廠有三大家

  • Amazon Web Services 簡稱 AWS
  • Google Cloud Platform 簡稱GCP
  • Microsoft Azure 有人叫它做蔚藍??
    https://ithelp.ithome.com.tw/upload/images/20200912/20125065NLkDA2GuyW.jpg

此次會選擇Azure 主要的原因就是學習門檻相對其他三大家來說提供了比較多的中文化資料及初次註冊就有6000元台幣左右的的試用資源,讓我們新手剛接觸雲端服務就不需要太擔心下個月突然收到一堆莫名的帳單,然後準備吃土(望向隔壁棚的AWS不是那麼友善的管理整合界面/images/emoticon/emoticon06.gif)

在第八天還沒註冊的朋友,這裡容我跳過註冊的步驟,照著微軟的說明,準備上你的信用卡之後一切真的不難.

前二天我們利用了SaaS軟體即服務 和MongoDB的Atlas公共雲端資料庫連線
今天就讓我們來利用它,建一個MySQL Ver8.0 的資料庫,學習Python如何使用程式碼直接接上Azure 提供的資料庫服務吧.

文件參考:Python和Azure資料庫資源連結
SQL 教學(w3school

開始前的準備動作

有玩過微軟的Windows SERVER系列的人應該都會知道 AD 這個舉足輕重的設定
套用到Azure的時候,這個概念也更加進階了.關於AD的WiKi

在開始連接資料庫前,請先在AD 建立一個管理者的角色
1.新增一個角色的目的是為了日後有最大的權限可以控制所有的資源存取,建立的過程密碼請自行保存好,弄丟了很麻煩的!!!!

https://ithelp.ithome.com.tw/upload/images/20200913/20125065hoyuXkM0bF.jpg
https://ithelp.ithome.com.tw/upload/images/20200913/20125065OQ8odhQAoO.jpg
(謎之音:也方便微軟向各位使用者收費/images/emoticon/emoticon39.gif
2.新增一個資源群組
3.新增一個資料庫
https://ithelp.ithome.com.tw/upload/images/20200913/20125065lYDqgvux89.jpg
4.下載MySQL Workbench 8 CE
5.依照這個說明文件的操作流程,先熟悉一下SQL的相閞語法
6.對資料庫指派先前由AD建立起來的管理者
7.準備用Python 連接Azure MySQL

Python 使用MySQL 常見的套件有 PySQL/SQLAlchemy/mysql-connector-python
今天我們就跟著巨人的步伐,使用mysql-connector-python套件吧
程式範例引用自Microsoft example ,其中需要修改的設定
Host:請改成自己申請的資料庫伺服器名稱
user:請改成自己申請的資料庫管理角色
password:請改成自己申請的資料庫管理密碼
database::請改成自己先前的資料庫名稱如果沒有,建議先在workbench 建立一個練習用的資料庫,建立的同時,請調整使用
;

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>'
}

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

Day 12 好想停筆1天,放鬆一下...


上一篇
{Day11}Python SQL DATABASE --使用SQLAlchemy
下一篇
{Day13}關於對於使用者權限控制的基礎知識
系列文
第12 屆IT鐵人賽 -Python新手玩玩Web應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言