Python 學習筆記- pypyodbc讀取 Microsoft Access檔案

Python安裝pypyodbc模組

Python 無法直接讀取Microsoft Access的accdb或mdb資料庫檔案, 一般會透過2種模組來讀取:
  1. pypyodbc
  2. pyodbc
以下為Python安裝pypyodbc模組讀取Microsoft Access的步驟:

安裝pypyodbc

In [ ]:
pip install pypyodbc
Collecting pypyodbc
Requirement already satisfied: setuptools in c:userssuperuserminiconda3envsfinlablibsite-packages (from pypyodbc) (41.0.1)
Building wheels for collected packages: pypyodbc
  Building wheel for pypyodbc (setup.py): started
  Building wheel for pypyodbc (setup.py): finished with status ‘done’
  Created wheel for pypyodbc: filename=pypyodbc-1.3.4-cp36-none-any.whl size=22847 sha256=55f456049e019685e95f632d066c46f2a8082b161ed075b2b8237cb47ee10637
  Stored in directory: C:UserssuperuserAppDataLocalpipCachewheelse49218b21aa15a7e8915859a6fc10206cdd7f5d9ac098a523b9738c6
Successfully built pypyodbc
Installing collected packages: pypyodbc
Successfully installed pypyodbc-1.3.4
Note: you may need to restart the kernel to use updated packages.

成功安裝後,要重新啟動Kernel

In [1]:
import pypyodbc
import pandas as pd

db_file = 'D:\DATA\Python data\練習\0000_1010801-1080331.accdb' ## Microsoft Access 檔案名稱
user = 'Administrator'
password = ''
connection_string = 'DRIVER={Microsoft Access Driver (*.accdb)};DBQ=%s;UID=%s;PWD=%s' % (db_file, user, password)
conn = pypyodbc.win_connect_mdb(connection_string)
SQL = 'SELECT * FROM [1010801-1080331]' ## 1010801-1080331為資料表名稱
cur = conn.cursor()

cur.execute(SQL)

list = cur.fetchall()
desc = cur.description
cur.close()
conn.close()


df_column = pd.DataFrame(desc)
df_column[0]

df = pd.DataFrame(list, columns=df_column[0])
df.head()
Out[1]:
編號 申報種類 交易標的種類 土地數量 建物數量 車位數量 幾房 幾廳 幾衛 有無隔間 代表建號屋齡 代表建號層次 車位總價格 車位總持分面積 地建號範圍 行政區 地段 土地移轉面積(坪) 建物移轉面積(坪) 房地單價(每坪萬元)
0 0 買賣 房地(土地+建物) 2.0 1.0 None 8.0 4.0 5.0 Y 39.0 一層;二層;三層;四層;五層;騎樓;地下層 None None 五福四路91~120號 鹽埕區 大智段 20.27 104.24 15.3
1 1 買賣 房地(土地+建物) 1.0 1.0 None 3.0 2.0 2.0 Y 32.0 一層 None None 大公路121巷1~30號 鹽埕區 興橋段 10.28 29.79 6.0
2 2 買賣 房地(土地+建物) 2.0 1.0 None 3.0 2.0 2.0 Y 29.0 四層 None None 七賢三路121~150號 鹽埕區 興仁段 2.71 33.3 6.9
3 3 買賣 房地(土地+建物) 2.0 1.0 None 3.0 2.0 2.0 N 28.0 五層 None None 公園二路1~30號 鹽埕區 大成段 8.38 25.42 9.8
4 4 買賣 房地(土地+建物) 1.0 1.0 None 2.0 2.0 1.0 Y 14.0 八層 None None 建國四路361~390號 鹽埕區 鹽北段 2.09 20.92 9.5
5 rows × 39 columns

將「編號」設定為index

In [2]:
df = df.set_index("編號", drop=True)
df.head()
Out[2]:
申報種類 交易標的種類 土地數量 建物數量 車位數量 幾房 幾廳 幾衛 有無隔間 建物型態 代表建號屋齡 代表建號層次 車位總價格 車位總持分面積 地建號範圍 行政區 地段 土地移轉面積(坪) 建物移轉面積(坪) 房地單價(每坪萬元)
編號
0 買賣 房地(土地+建物) 2.0 1.0 None 8.0 4.0 5.0 Y 店面(店鋪) 39.0 一層;二層;三層;四層;五層;騎樓;地下層 None None 五福四路91~120號 鹽埕區 大智段 20.27 104.24 15.3
1 買賣 房地(土地+建物) 1.0 1.0 None 3.0 2.0 2.0 Y 公寓(5F含以下無電梯) 32.0 一層 None None 大公路121巷1~30號 鹽埕區 興橋段 10.28 29.79 6.0
2 買賣 房地(土地+建物) 2.0 1.0 None 3.0 2.0 2.0 Y 住宅大樓(11F含以上有電梯) 29.0 四層 None None 七賢三路121~150號 鹽埕區 興仁段 2.71 33.3 6.9
3 買賣 房地(土地+建物) 2.0 1.0 None 3.0 2.0 2.0 N 公寓(5F含以下無電梯) 28.0 五層 None None 公園二路1~30號 鹽埕區 大成段 8.38 25.42 9.8
4 買賣 房地(土地+建物) 1.0 1.0 None 2.0 2.0 1.0 Y 華廈(10F含以下有電梯) 14.0 八層 None None 建國四路361~390號 鹽埕區 鹽北段 2.09 20.92 9.5
5 rows × 38 columns

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *