2020年1月8日 星期三

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:\users\superuser\miniconda3\envs\finlab\lib\site-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:\Users\superuser\AppData\Local\pip\Cache\wheels\e4\92\18\b21aa15a7e8915859a6fc10206cdd7f5d9ac098a523b9738c6
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]:
編號申報種類交易標的種類土地數量建物數量車位數量幾房幾廳幾衛有無隔間...代表建號屋齡代表建號層次車位總價格車位總持分面積地建號範圍行政區地段土地移轉面積(坪)建物移轉面積(坪)房地單價(每坪萬元)
00買賣房地(土地+建物)2.01.0None8.04.05.0Y...39.0一層;二層;三層;四層;五層;騎樓;地下層NoneNone五福四路91~120號鹽埕區大智段20.27104.2415.3
11買賣房地(土地+建物)1.01.0None3.02.02.0Y...32.0一層NoneNone大公路121巷1~30號鹽埕區興橋段10.2829.796.0
22買賣房地(土地+建物)2.01.0None3.02.02.0Y...29.0四層NoneNone七賢三路121~150號鹽埕區興仁段2.7133.36.9
33買賣房地(土地+建物)2.01.0None3.02.02.0N...28.0五層NoneNone公園二路1~30號鹽埕區大成段8.3825.429.8
44買賣房地(土地+建物)1.01.0None2.02.01.0Y...14.0八層NoneNone建國四路361~390號鹽埕區鹽北段2.0920.929.5
5 rows × 39 columns

將「編號」設定為index

In [2]:
df = df.set_index("編號", drop=True)
df.head()
Out[2]:
申報種類交易標的種類土地數量建物數量車位數量幾房幾廳幾衛有無隔間建物型態...代表建號屋齡代表建號層次車位總價格車位總持分面積地建號範圍行政區地段土地移轉面積(坪)建物移轉面積(坪)房地單價(每坪萬元)
編號
0買賣房地(土地+建物)2.01.0None8.04.05.0Y店面(店鋪)...39.0一層;二層;三層;四層;五層;騎樓;地下層NoneNone五福四路91~120號鹽埕區大智段20.27104.2415.3
1買賣房地(土地+建物)1.01.0None3.02.02.0Y公寓(5F含以下無電梯)...32.0一層NoneNone大公路121巷1~30號鹽埕區興橋段10.2829.796.0
2買賣房地(土地+建物)2.01.0None3.02.02.0Y住宅大樓(11F含以上有電梯)...29.0四層NoneNone七賢三路121~150號鹽埕區興仁段2.7133.36.9
3買賣房地(土地+建物)2.01.0None3.02.02.0N公寓(5F含以下無電梯)...28.0五層NoneNone公園二路1~30號鹽埕區大成段8.3825.429.8
4買賣房地(土地+建物)1.01.0None2.02.01.0Y華廈(10F含以下有電梯)...14.0八層NoneNone建國四路361~390號鹽埕區鹽北段2.0920.929.5
5 rows × 38 columns

沒有留言:

【公告】網站遷移,未來內容將發表於新網站!!

 受限於blogger本身架構與限制,本網站所有內容已遷移至新網站,網址如下: https://kuo.us.to/wordpress/