2014/9/23

[筆記]R 與 Python 連接 MySQL 資料庫

[筆記]R 與 Python 連接 MySQL 資料庫方式

作業環境:Mac OSX
資料庫:本機 / 資料庫名稱 = a777
因為我個人對於 SQL 還蠻熟悉的,所以一些初步資料整理的工作我都會傾向在資料匯入時就完成,所以我很喜歡在 R 與 Python 中直接使用 SQL ,好處也是如果以後換轉到不同平台時,SQL 這個產業標準還能延用下去


R 連接  MySQL 資料庫

(1)安裝 RJDBC RMYSQL 套件
在Linux體系下安裝 RODBC 比較麻煩點,RJDBC 會省事很多

(2)語法範例程序:連接資料庫→取得資料→關閉連線→檢視資料

library(RJDBC)
library(RMySQL)

#定義連線字串
conn <- dbConnect(MySQL(), dbname = "a777", username="root", password="")

#將SQL查詢後的資料置於 data,資料型別為 data.frame
data = dbGetQuery(conn, "select * from MINING_BASE")

#關閉資料庫連線
dbDisconnect(conn)

head(data)
#進行資料初步檢視


python 連接  MySQL 資料庫

(1)安裝 MySQLdb pandas 套件
pandas 不是連接 MYSQL 的必要套件,但因為資料取得後也是要進行相關統計分析
所以也直接引用,pandas可以視為python中主要處理統計相關議題的重要套件

(2)語法範例程序:連接資料庫→取得資料→關閉連線→檢視資料

import MySQLdb
import pandas as pd
from pandas.io.sql import read_sql

# frame_query 是舊方法,pandas 建議大家改用新的 read_sql
# 引用 MySQLdb 用以連接 MySQL資料庫

#定義連線字串
mysql_cn= MySQLdb.connect(host='127.0.0.1',
                port=3306,user='root', passwd='',
                db='a777')

#將SQL查詢後的資料置於 data,資料型別為 pandas.core.frame.DataFrame
# rad_sql( "SQL語法"  , 連線字串)

data = read_sql("select * from MINING_BASE   "  , mysql_cn  )

mysql_cn.close()
#關閉資料連線

data.head()
#進行資料初步檢視

參考資料:
http://www.r-bloggers.com/mysql-and-r/


備註:


# Python 中還有一種方式是使用 sqlalchemy ORM
# 暫時用不到這種語法,但也做為一個補充放上來
# 參考網址   http://docs.sqlalchemy.org/en/rel_0_9/orm/
# 中文教學網址  http://chimerhapsody.blogspot.tw/2013/08/python-sqlalchemy-orm-part-1.html


import sqlalchemy
import csv
engine = sqlalchemy.create_engine('mysql://root@localhost/a777')
connection = engine.connect()
result = connection.execute("select MINING_DW_SUBSCR_NO from MINING_BASE")
row = result.fetchone()
#for row in result:
 #   print "your data in here ", row['MINING_DW_SUBSCR_NO']

fh = open('data77777.csv', 'wb')

outcsv = csv.writer(fh)
outcsv.writerow(result.keys())
outcsv.writerows(result)

fh.close
connection.close()


沒有留言:

張貼留言