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()


愈來愈討厭 big data 的字眼

愈來愈討厭 big data 的字眼

雖然本部落叫做 moe big data,目前看來好像是用來騙流量的…

主要的理由是目前有太多不切實際的理想都被歸入 big data

好處當然是相關領域會有大批的人力物力財力予以投入
但是缺點就變成什麼東西都是 big data,在討論事情的時候就變成雞同鴨講

好比最怕碰到一種人「不要和我談政治」,但是當你聽到他這樣說的時候,其實大部份的時候是很難理解他說的是「不要批判某一特定政黨」「不要批判某一候選人」「公司同事之間的相處之道」;因為廣義的來說,只要有人際關係、有利害,小則家庭可以有政治,中則公司有政治,範圍更廣的則有國家體制內的政治、國際政治,你說不要談是在講什麼哩

所以我轉念一想
也許本部落來談談一些基本 big data 下較為具體的技術與理論好了
畢竟太虛幻太美麗的事物,終究是鏡花水月…



Sublime text - 設定 SublimeREPL

目前使用 sublime text 3做為預設文字處理編輯器
主要使用的語言為 python 與 R


sublime text 預設支援 python 環境,只要設定[Tools]-->[Build system]-->[Python]
在編輯 python 的同時只要按下 cmd+b 就可以看到python檔案執行結果,
不過還是有些限制,所以需要單純的python作業環境

要達成這個目的最基本的就是安裝sublimeREPL 套件
(REPL指的是read-evaluation-print-loop)
簡單的想成就是在編輯器上面就直接可以執行 Python 與 R)

sublimeREPL相關設定如下:

(1)事先裝好 package control 這個套件
(2)安裝 sublimeREPL
(3)設定 user 使用檔
    sublime text 的使用邏輯是你先到預設檔案複製相關設定值到user設定,避免後續你反悔了想要改回預設值時找不到檔案(不過其實大部份的套件在github都直接找得到預設值)

我使用的環境是 mac osx,比較重要的設定如下提供參考:

    "default_extend_env":  {"PATH": "/Users/帳號/anaconda/bin:/Users/帳號/anaconda/bin:/Users/帳號/anaconda/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin"},

(4)切換檢視方式
[view] --> [Layout] --> [Col2] (我是選2欄的版面)

(5)叫出Python作業環境
個人習慣使用 ipython
    方法1:[Tools] --> [SublimeREPL] --> [Python] -->[IPYTHON]
    方法2:快速鍵 shift+cmd+p ,輸入 reip
    (因為sublime有支援 fuzzy 蒐尋所以可以省略部分英文字母)

結果如下:
左側是 python 文件編輯區
右側是 iptyhon作業環境  (iptyhon的左則 tab是 R 的作業環境)
下側是 python 執行結果