前10天的文章,比較像是當天進度到哪就截斷至哪,顯得有些紊亂。決定從今天的文章開始/結尾都先寫一下今日/明日的目標為何,感覺起來比較有規劃。順便說明一下昨天的時間進度依然沒有長進,起床後發現電腦呈現弱電量狀態、又趕著帶電腦出門上課,只好忍痛先放棄,今天晚上繼續插著電跑跑看囉...。
進入SQL的練習,將整理過後的Data存入資料庫中,提供在商業場景時能夠做的資料撈取,順便複習一下SQL的語法,這次主要想要練習的是MariaDB(My SQL)的操作,但今天僅會先存入SQLite。SQLite僅能在單機上操作,無法多人共同撈取,有些語法SQLite也無法使用。
簡短說明,SQLite是本地端即可使用的資料庫系統,屬於輕量化的資料庫,也是手機裡很常見的資料庫。
如果想要下載SQLite可以點這邊。
如果是DataFrame的格式,有一個很方便的函數**df.to_sql()**可以直接存入Database中。
#這裡存的是去除掉有'###'後的所有資料(故包含1min內數據)
import sqlite3
conn=sqlite3.connect(r'C:\Users\chuan\Ride_Data.sqlite') #連線並取資料庫名稱
df1.to_sql('Clean_Data', conn,if_exists='replace',index=True) #取資料表名稱,如果資料表已存在要覆蓋還是往下加,要不要連同index一起存入
conn.close()
接著到指定位置看資料庫有沒有建成功就ok囉!
在Python中,也可以直接連結SQLite來修改資料庫內容,但是要記得先將SQLite本身關掉再修~
說到SQL語法,大多都圍繞著資料定義(DDL)|資料處理(DML)|資料查詢(DQL),在資料庫中的篩選多與DQL有關(SELECT...FROM...)。
以下用以前做過的一段專案程式碼,來看如何於Python中直接新增/修改資料庫內容:
#創建資料庫檔案,利用CREATE新增資料表以及欄位名稱/格式
import sqlite3
conn=sqlite3.connect('GreenHouse.sqlite')
#execute()執行內容
conn.execute("""CREATE TABLE greenhouse
(Year TEXT,
Companyname TEXT,
City TEXT,
Town TEXT,
Industry TEXT,
CO2 INT,
CH4 INT,
N2O INT,
HFCs INT,
PFCs INT,
SF6 INT,
nf3 INT,
Tot2 INT,
tot INT,
cause TEXT)""")
for item in Data['result']['records']: #將Dataframe資料存入各欄位中
sql="INSERT INTO greenhouse(Year,Companyname,City,Town,Industry,CO2,CH4,N2O,HFCs,PFCs,SF6,nf3,Tot2,tot,cause) VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}')" sql=sql.format(item['App_year'],item['companyname'],item['city'],item['town'],item['Sicname1'],item['CO2'],item['CH4'],item['N2O'],item['HFCs'],item['PFCs'],item['SF6'],item['nf3'],item['Tot2'],item['tot'],item['cause'])
cursor=conn.execute(sql)
print(cursor.rowcount)
conn.commit() #結束前使用commit()進行提交
conn.close() #結束連線
簡單來說,Python中執行SQL語法,不外乎就是連線/執行(execute)/提交(commit)和結束連線(close),另一個要注意的點就是SQL語法部分都要用字串來表示,也就是不能夠在IDE中辨識是否成功執行。所以初學者(如我)幾乎都會先嘗試在Database中先執行看看再來Python處理。^^
今天的文章大概到這邊,最近幾天真的比較忙一些,但還是要湊出時間來發文好緊繃XD
完成從Python轉到Mariadb中(初嘗試~應該很有趣但又極有可能占一天篇幅XD)
昨天時間的問題解決
利用SQL語法進行資料查詢
明天見!