設定

基本上,最新版的mysql-connector-python及pymysql都依據 PEP 249 – Python Database API Specification v2.0,所以,大多數基本語法都已經統一,並沒有太大的差別了,唯一的差就是安裝以及import的來源不同。

我們以mysql-connector-python為例,先安裝套件。

pip install mysql-connector-python

image.png

產生資料表並匯入資料

CREATE TABLE `job` (
  `postid` int(11) NOT NULL,
  `company` varchar(45) NOT NULL,
  `content` text NOT NULL,
  `pdate` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `job` (`postid`, `company`, `content`, `pdate`) VALUES
(1, 'Microsoft', '誠徵雲端工程師,三年工作經驗以上', '2024-10-18'),
(2, '萬里雲', '誠徵雲端工程師,一年工作經驗以上', '2024-10-19'),
(3, 'Google', '誠徵雲端工程師,三年工作經驗以上', '2024-10-20'),
(4, 'AWS Taiwan', '誠徵雲端工程師,三年工作經驗以上', '2024-10-25'),
(5, '伊雲谷', '誠徵雲端工程師,一年工作經驗以上', '2024-10-25'),
(6, '叡揚資訊', '誠徵程式設計師,一年工作經驗以上', '2024-10-25');

ALTER TABLE `job`
  ADD PRIMARY KEY (`postid`);
  
ALTER TABLE `job`
  MODIFY `postid` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
COMMIT;

讀取資料

這是範例程式的內容

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

mycursor = mydb.cursor()

mycursor.execute("SELECT * FROM customers")

myresult = mycursor.fetchall()

for x in myresult:
  print(x)

綜合我們上週的範例,我們來寫一個API

先import套件:

import mysql.connector

資料表參數設定

def getDB():
  mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  password="password",
  database="practice")
  return mydb

加上下面這段程式碼:

@app.get("/job")
async def getJobs():
  mydb = getDB()
  mycursor = mydb.cursor()
  mycursor.execute("SELECT * FROM job")
  myresult = mycursor.fetchall()
  return myresult

網頁上會看到: