這幾天幫弟弟和家人買東西,自己用MYSQL存了購買資料,然後再用PYTHON去抓出資料作集計
MYSQL的部分
找出完全相同的字串
SELECT *FROM table名
(Transactions info
)WHERE 欄位(顧客姓名) =條件(’小姑’);
SELECT *FROM Transactions info
WHERE 顧客姓名 =’小姑’;
字串的資料必須用『’』單引號包起來
找出部分相同的字串 (LIKE 及 萬用字元%)
SELECT *FROM
SELECT *FROM table名
(Transactions info
)WHERE 欄位(顧客姓名 LIKE 條件
('小
;%
')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),"筆")
執行結果