Python 從MYSQL裡面選出欄位中的關鍵字

這幾天幫弟弟和家人買東西,自己用MYSQL存了購買資料,然後再用PYTHON去抓出資料作集計

MYSQL的部分

參考資料 伊のspace~芳香精油*美容保養*程式設計

找出完全相同的字串

SELECT *FROM table名 Transactions infoWHERE 欄位顧客姓名 =條件(’小姑’);

SELECT *FROM Transactions info WHERE 顧客姓名 =’小姑’;


字串的資料必須用『’』單引號包起來

找出部分相同的字串 (LIKE 及 萬用字元%)

SELECT *FROM table名 Transactions infoWHERE 欄位顧客姓名 LIKE 條件('% ') ;
SELECT *FROM Transactions info WHERE 顧客姓名 LIKE ‘小%’;

萬用字元只有文字型態欄位(VARCHAR)可以使用

%:任何含有0個或更多 VARCHAR 的字串。

WHERE 欄位 LIKE %小 %,可找出指定欄位中含有所有 『』的紀錄。

_ (底線):任何單一字元, 字數等於3個字的字串


WHERE 欄位 LIKE ‘ 小 _’,可找出開頭為『 』,且字數等於3個字的字串。

[]:在指定範圍([a-h])或集合([abcdefgh])中的任何單一字元。


WHERE Sunny LIKE ‘[1-5]%‘,可找出 Sunny 開頭為『1-5』的資料。

WHERE Sunny LIKE ‘[A-K]%‘,可找出 Sunny 開頭為『A-K』的資料。 *只可以是數字或英文字母

[^]:不 在指定範圍([a-h])或集合([abcdefgh])中的任何單一字元。


WHERE Sunny LIKE ‘D[^1-5]%‘,可找出 Sunny 開頭 『D』 並排除第二位是 『1-5』 的資料。

※萬用字元如果出現在資料字元的話(例如:100%),則必須使用跳脫字元(ESCAPE) ‘\‘ 。
WHERE 欄位 LIKE ‘%100\%%’

python的部分

import mysql.connector
import smtplib
from email.mime.text import MIMEText

connection = mysql.connector.connect(host="....",
                                     port="...",
                                     user="...",
                                     password="..",
                                     database=".." )

cusor =connection.cursor()
cusor.execute(f"SELECT *FROM `Transactions info`WHERE 顧客姓名 ='小姑'")
records =cusor.fetchall()    #小姑的購買資料
japandooler_list = []
number_list = []

for r in records:
    product = [r]
    japandooler =product[0][5] #日幣價錢欄位
    number =product[0][12]     #購買個數欄位
    
    japandooler_list.append(japandooler) #日幣價錢欄位加入串列
    number_list.append(number)            #購買個數加入串列

sum=0
for i in range(0,len(japandooler_list)):    
    sum+= japandooler_list[i]*number_list[i]  #日幣價錢[0]*購買個數[0]+日幣價錢[1]*購買個數[1].......日幣價錢串列的長度(看總共有幾筆)
print("小姑金錢總和:",sum)                     #小姑金錢總和


cusor =connection.cursor()
cusor.execute(f"SELECT *FROM `Transactions info`WHERE 顧客姓名 ='爸爸同事'")
records1 =cusor.fetchall()
japandooler_list1 = []
number_list1 = []

for r in records1:
    product1 = [r]
    japandooler1 =product1[0][5]
    number1 =product1[0][12]
    
    japandooler_list1.append(japandooler1)
    number_list1.append(number1)
    


sum=0
for i in range(0,len(japandooler_list1)):
    sum+= japandooler_list1[i]*number_list1[i]
print("爸爸同事金錢總和:",sum)

cusor =connection.cursor()
cusor.execute(f"SELECT *FROM `Transactions info`WHERE 顧客姓名 ='預售'")
records2 =cusor.fetchall()
japandooler_list2 = []
number_list2 = []

for r in records2:
    product2 = [r]
    japandooler2 =product2[0][5]
    number2 =product2[0][12]
    
    japandooler_list2.append(japandooler2)
    number_list2.append(number2)
    

sum=0
for i in range(0,len(japandooler_list2)):
    sum+= japandooler_list2[i]*number_list2[i]
print("弟弟金錢總和:",sum)


cusor =connection.cursor()
cusor.execute(f"SELECT *FROM `Transactions info`")  #抓出小姑和爸爸同事和弟弟的全部table資料
recordsALL =cusor.fetchall()
japandoolerALL_list = []
numberALL_list = []

for r in recordsALL:
    productALL = [r]
    japandoolerALL =productALL[0][5]
    numberALL =productALL[0][12]
    
    japandoolerALL_list.append(japandoolerALL)
    numberALL_list.append(numberALL)

sum=0
for i in range(0,len(japandoolerALL_list)):
    sum+= japandoolerALL_list[i]*numberALL_list[i]
print("金錢總和:",sum)
#上面三筆金錢總和有沒有和金錢總和相符?

#下面三筆數量有沒有和總數量相符?
print("總數量",len(japandoolerALL_list),"筆")  
print("小姑數量",len(japandooler_list),"筆")          
print("爸爸同事數量",len(japandooler_list1),"筆")
print("弟弟數量",len(japandooler_list2),"筆")

執行結果