#----------------------------------------------------- #範例14-5:新增1筆資料(新增新同學amy的資料) #------------------------------------------------- #(1)參考: # to_sql:https://www.jianshu.com/p/d615699ff254 # to_sql:https://www.w3resource.com/pandas/dataframe/dataframe-to_sql.php # to_sql:https://developer.aliyun.com/article/1047569 # https://www.796t.com/content/1544363402.html # https://ithelp.ithome.com.tw/questions/10204032 # https://sunnyingit.github.io/book/section_python/SQLalchemy-orm.html # 影片:https://www.youtube.com/watch?v=6k6NxFyKKQo #(2)什麼是SQLAlchemy # SQL Alchemy = SQL煉金術 # SQLAlchemy 的一個目標是提供能相容眾多資料庫(如 SQLite、MySQL、Postgres、Oracle、MS-SQL、SQLServer 和 Firebird)的企業級持久性模型。 # SQLAlchemy 提供了SQL工具包及物件關係映射(ORM)工具 # SQLAlchemy ORM呈現了一種關於使用者定義的Python類別和資料庫表格(table), 以及類別(物件)的實例(instance)與之相對應表格中的資料列的方法 # ORM:物件關係對映器(Object Relation Mapping) # ORM 即為使用者自訂類和資料庫的表的映射關係,通俗來說,一個類映射到一張表,一個類的實例(物件)對應資料庫表裡面的一行資料,實例的屬性和資料庫row的資料保持即時同步 #(1)步驟1:建議:mySQL範例要在anaconda裡面測試(不要再cola測試) #要先安裝:python 3.x版本的安裝mysql的指令:pip install pymysql #(2)步驟2:安裝mySQL #安裝: wamp或xamp #帳號為root,密碼不設定 #(3)步驟3:建立dataframe(df) #(4)步驟4:使用連線mydb資料庫的指令: #先安裝sqlalchemy模組 #指令: pip install sqlalchemy #from sqlalchemy import create_engine #engine = create_engine("mysql+pymysql://{}:{}@{}/{}?charset={}".format('root', '', '127.0.0.1:3306', 'mydb','utf8')) #engine = create_engine("mysql+pymysql://{}:{}@{}/{}?charset={}".format('root', '', 'localhost:3306', 'mydb','utf8')) #engine = create_engine("mysql+pymysql://root:@127.0.0.1:3306/mydb?charset=utf8") #engine = create_engine("mysql+pymysql://root:@localhost:3306/mydb?charset=utf8") #建立連線 #conn = engine.connect() #df.to_sql(name='資料表名稱', con=conn, if_exists='replace', index=False) #或是 #df.to_sql(name='資料表名稱', con=conn, if_exists='append', index=False) #☎ if_exists='replace', 若存在則覆蓋 # if_exists='append', 若存在則在後面加上去 # if_exists='fail',若存在則不做處理 #☎連線mySQL的資料表,若要設定索引欄位,方法: #df.to_sql(name="經管3a", con=conn, if_exists="replace", index=True, index_label='abc') #注意:新的索引欄位index_label,不可以是已經存在的欄位名稱,必須是新名稱 #☎連線mySQL的資料表,若不要設定索引欄位,方法: #df.to_sql(name="經管3a", con=conn, if_exists="replace", index=False) #(5)步驟5:查看mySQL資料庫,是否有新增資料表,或已經修改 #-------------------------------------------- #練習1:讀取csv檔案,轉成dataframe #-------------------------------------------- #(1)https://acupun.site/lecture/pandas/example/chp10/pratice/scoreChi.csv #讀取csv檔案 #轉成df print("1-1.顯示全部資料=\n") #-------------------------------------------- #練習2:新增1筆資料(新增新同學amy的資料) #:新增1筆資料,有2種1方法: #(1)方法1:f.loc['amy'] =[.....] #df.set_index("姓名", inplace=True) #df.loc['amy'] = [9096008, "女", 90, 90, 90] #注意:設定index後,原本的欄位就會消失 #注意:所以,要上傳mySQL前,要先把index取消 #df = df.reset_index() #(2)方法2: df.append({字典.....}, ignore_index=True) #df = df.append({'學號':9096008, '姓名':"amy", "性別":"女", "中文":90, "英文":90, "數學":90 }, ignore_index=True) #(3)錯誤方法3: df.iloc[7]無法新增) # df.iloc[]:可以修改,無法新增 # 錯誤: df.iloc[7] = [9096008, "amy", "女", 90, 90, 90] #-------------------------------------------- #(1)新增1筆資料(新增新同學amy的資料) print() # 方法1:f.loc['amy'] =[.....] print("2-1.顯示全部資料=\n") ### 要上傳前,要先把index取消 print("2-2.顯示全部資料=\n") #------------------------------------- #練習3:把df同步連線到mySQL(使用SQLAlchemy連線技術 ) #(1)sqlalchemy連線方法 #from sqlalchemy import create_engine #engine = create_engine("mysql+pymysql://root:@localhost:3306/mydb?charset=utf8") #conn = engine.connect() #df.to_sql(name="經管3a", con=conn, if_exists="replace", index=False) #(2)連線mySQL的資料表,若要設定索引欄位,方法: #df.to_sql(name="經管3a", con=conn, if_exists="replace", index=True, index_label='abc') #------------------------------------- #(1)先安裝sqlalchemy模組: pip install sqlalchemy #(2)從sqlalchemy模組載入create_engine函式 #(3)建立連線引擎 #(4)把df同步連線到mySQL #注意:資料表名稱有區分大小寫(不可以寫:經管3a) #注意:index=False,不設定index欄位 #關閉連線 #-------------------------------------------------------------------- #-------------------------------------------------------------------- #範例14-5:新增1筆資料(新增新同學amy的資料) #------------------------------------------------- #(1)參考: # to_sql:https://www.jianshu.com/p/d615699ff254 # to_sql:https://www.w3resource.com/pandas/dataframe/dataframe-to_sql.php # to_sql:https://developer.aliyun.com/article/1047569 # https://www.796t.com/content/1544363402.html # https://ithelp.ithome.com.tw/questions/10204032 # https://sunnyingit.github.io/book/section_python/SQLalchemy-orm.html # 影片:https://www.youtube.com/watch?v=6k6NxFyKKQo #(2)什麼是SQLAlchemy # SQL Alchemy = SQL煉金術 # SQLAlchemy 的一個目標是提供能相容眾多資料庫(如 SQLite、MySQL、Postgres、Oracle、MS-SQL、SQLServer 和 Firebird)的企業級持久性模型。 # SQLAlchemy 提供了SQL工具包及物件關係映射(ORM)工具 # SQLAlchemy ORM呈現了一種關於使用者定義的Python類別和資料庫表格(table), 以及類別(物件)的實例(instance)與之相對應表格中的資料列的方法 # ORM:物件關係對映器(Object Relation Mapping) # ORM 即為使用者自訂類和資料庫的表的映射關係,通俗來說,一個類映射到一張表,一個類的實例(物件)對應資料庫表裡面的一行資料,實例的屬性和資料庫row的資料保持即時同步 #(1)步驟1:建議:mySQL範例要在anaconda裡面測試(不要再cola測試) #要先安裝:python 3.x版本的安裝mysql的指令:pip install pymysql #(2)步驟2:安裝mySQL #安裝: wamp或xamp #帳號為root,密碼不設定 #(3)步驟3:建立dataframe(df) #(4)步驟4:使用連線mydb資料庫的指令: #先安裝sqlalchemy模組 #指令: pip install sqlalchemy #from sqlalchemy import create_engine #engine = create_engine("mysql+pymysql://{}:{}@{}/{}?charset={}".format('root', '', '127.0.0.1:3306', 'mydb','utf8')) #engine = create_engine("mysql+pymysql://{}:{}@{}/{}?charset={}".format('root', '', 'localhost:3306', 'mydb','utf8')) #engine = create_engine("mysql+pymysql://root:@127.0.0.1:3306/mydb?charset=utf8") #engine = create_engine("mysql+pymysql://root:@localhost:3306/mydb?charset=utf8") #建立連線 #conn = engine.connect() #df.to_sql(name='資料表名稱', con=conn, if_exists='replace', index=False) #或是 #df.to_sql(name='資料表名稱', con=conn, if_exists='append', index=False) #☎ if_exists='replace', 若存在則覆蓋 # if_exists='append', 若存在則在後面加上去 # if_exists='fail',若存在則不做處理 #☎連線mySQL的資料表,若要設定索引欄位,方法: #df.to_sql(name="經管3a", con=conn, if_exists="replace", index=True, index_label='abc') #注意:新的索引欄位index_label,不可以是已經存在的欄位名稱,必須是新名稱 #☎連線mySQL的資料表,若不要設定索引欄位,方法: #df.to_sql(name="經管3a", con=conn, if_exists="replace", index=False) #(5)步驟5:查看mySQL資料庫,是否有新增資料表,或已經修改 #-------------------------------------------- #練習1:讀取csv檔案,轉成dataframe #-------------------------------------------- #(1)https://acupun.site/lecture/pandas/example/chp10/pratice/scoreChi.csv #讀取csv檔案 import pandas as pd #轉成df df = pd.read_csv("https://acupun.site/lecture/pandas/example/chp10/pratice/scoreChi.csv") print("1-1.顯示全部資料=\n", df) #-------------------------------------------- #練習2:新增1筆資料(新增新同學amy的資料) #:新增1筆資料,有2種1方法: #(1)方法1:f.loc['amy'] =[.....] #df.set_index("姓名", inplace=True) #df.loc['amy'] = [9096008, "女", 90, 90, 90] #注意:設定index後,原本的欄位就會消失 #注意:所以,要上傳mySQL前,要先把index取消 #df = df.reset_index() #(2)方法2: df.append({字典.....}, ignore_index=True) #df = df.append({'學號':9096008, '姓名':"amy", "性別":"女", "中文":90, "英文":90, "數學":90 }, ignore_index=True) #(3)錯誤方法3: df.iloc[7]無法新增) # df.iloc[]:可以修改,無法新增 # 錯誤: df.iloc[7] = [9096008, "amy", "女", 90, 90, 90] #-------------------------------------------- #(1)新增1筆資料(新增新同學amy的資料) print() # 方法1:f.loc['amy'] =[.....] df.set_index("姓名", inplace=True) print("2-1.顯示全部資料=\n", df) df.loc['amy'] = [9096008, "女", 90, 90, 90] ### 要上傳前,要先把index取消 df = df.reset_index() print("2-2.顯示全部資料=\n", df) #------------------------------------- #練習3:把df同步連線到mySQL(使用SQLAlchemy連線技術 ) #(1)sqlalchemy連線方法 #from sqlalchemy import create_engine #engine = create_engine("mysql+pymysql://root:@localhost:3306/mydb?charset=utf8") #conn = engine.connect() #df.to_sql(name="經管3a", con=conn, if_exists="replace", index=False) #(2)連線mySQL的資料表,若要設定索引欄位,方法: #df.to_sql(name="經管3a", con=conn, if_exists="replace", index=True, index_label='abc') #------------------------------------- #(1)先安裝sqlalchemy模組: pip install sqlalchemy #(2)從sqlalchemy模組載入create_engine函式 from sqlalchemy import create_engine #(3)建立連線引擎 engine = create_engine("mysql+pymysql://root:@localhost:3306/mydb?charset=utf8") conn = engine.connect() #(4)把df同步連線到mySQL df.to_sql(name="經管3a", con=conn, if_exists="replace", index=False) #注意:資料表名稱有區分大小寫(不可以寫:經管3a) #注意:index=False,不設定index欄位 #關閉連線 conn.close() #--------------------------------------------------------------------