數(shù)據(jù)獲取_數(shù)據(jù)庫的讀取與存儲

一潜必、讀取MySQL數(shù)據(jù)庫

MySQL數(shù)據(jù)庫是開源的關(guān)系型數(shù)據(jù)庫沃但,可以通過python與其進(jìn)行連接。首先需要安裝第三方庫pymysql → pip install pymysql并且電腦上已經(jīng)安裝好該數(shù)據(jù)庫

# 設(shè)置cell多行輸出

from IPython.core.interactiveshell import InteractiveShell 
InteractiveShell.ast_node_interactivity = 'all' #默認(rèn)為'last'

# 導(dǎo)入相關(guān)庫
import numpy as np
import pandas as pd
import os
import pymysql  # 導(dǎo)入pymysql庫

(1)方法1 → 利用游標(biāo)cursor讀取

利用游標(biāo)cursor讀取垂攘,需要用cursor的execute的方法執(zhí)行sql淤刃,用cursor的fetchall獲取執(zhí)行的所有信息

第一步:連接MySQL數(shù)據(jù)庫

config = {'host':'192.168.0.102',
        'user':'Yeung',
        'password':'sjm13802448449ys',
        'port':3306,
        'database':'python_data',
        'charset':'utf8'} 

# 設(shè)置連接數(shù)據(jù)庫的參數(shù)
# 連接mysql數(shù)據(jù)庫服務(wù)端
# 分別輸入主機(jī)ip,用戶名陨仅,登錄賬號铝侵,端口,要連接的數(shù)據(jù)庫名稱以及編碼

conn = pymysql.connect(**config)  # 建立連接

第二步:創(chuàng)建游標(biāo)cursor

cur = conn.cursor()   # 創(chuàng)建游標(biāo)用于執(zhí)行SQL語言

# 編輯sql語句
sql = 'SELECT * FROM data_01'  # 查找data_01這個表的所有信息

# cursor的execute()執(zhí)行sql語句命令
data = cur.execute(sql)
conn.commit()  # 完成命令

第三步:用游標(biāo)的fetchall方法獲取所有執(zhí)行sql得到的所有信息

data = cur.fetchall()   # 返回結(jié)果為一個元祖
data
((1, '李承峰', '男', datetime.date(1958, 12, 2), 61, '副教授', '計算機(jī)系', 15000, 13),
 (2, '王平', '女', datetime.date(1971, 5, 5), 48, '助教', '計算機(jī)系', 9000, 12),
 (3, '劉冰云', '女', datetime.date(1977, 8, 14), 42, '助教', '建筑系', 8000, 6),
 (4, '珂克桓', '男', datetime.date(1990, 6, 9), 29, '助教', '經(jīng)管系', 9800, 8),
 (5, '張旭', '男', datetime.date(1969, 3, 12), 61, '副教授', '電子工程系', 12500, 9),
 (6, '黃劍峰', '男', datetime.date(1982, 5, 1), 37, '教授', '外語系', 21000, 6),
 (7, '朝陽路', '男', datetime.date(1984, 8, 10), 33, '副教授', '計算機(jī)系', 10500, 13),
 (8, '耶和華', '女', datetime.date(1980, 11, 3), 31, '助教', '外語系', 8000, 7),
 (9, '西奧菲', '女', datetime.date(1983, 5, 18), 36, '助教', '土木工程系', 9000, 6),
 (10, '張三', '男', datetime.date(1989, 9, 12), 30, '助教', '計算機(jī)系', 15000, 10),
 (11, '陳冰冰', '女', datetime.date(1978, 10, 12), 41, '副教授', '計算機(jī)系', 15000, 12),
 (12, '李曉峰', '男', datetime.date(1980, 10, 10), 39, '教授', '土木工程系', 20000, 13),
 (13, '顧小夢', '女', datetime.date(1980, 10, 10), 34, '教授', '建筑系', 22000, 14))

第四步:將結(jié)果元祖列表化后傳給DataFrame獲得數(shù)據(jù)框

data = list(data)
data_result = pd.DataFrame(data,columns=['編號',
                             '姓名',
                             '性別',
                             '生日',
                             '年齡',
                             '職位',
                             '部門',
                             '工資',
                             '工作時間'])
print(data_result.head())

cur.close()  # 關(guān)閉游標(biāo)
conn.close()  # 關(guān)閉與數(shù)據(jù)庫的連接
   編號   姓名 性別          生日  年齡   職位     部門     工資  工作時間
0   1  李承峰  男  1958-12-02  61  副教授   計算機(jī)系  15000    13
1   2   王平  女  1971-05-05  48   助教   計算機(jī)系   9000    12
2   3  劉冰云  女  1977-08-14  42   助教    建筑系   8000     6
3   4  珂克桓  男  1990-06-09  29   助教    經(jīng)管系   9800     8
4   5   張旭  男  1969-03-12  61  副教授  電子工程系  12500     9

(2)方法2 → pd.read_sql()

  • read_sql(sql,con, index_col=None……)嗜诀,將SQL數(shù)據(jù)庫和查詢讀取到DataFrame
    • 參數(shù):
    • sql孔祸,要執(zhí)行的SQL語句
    • con,數(shù)據(jù)庫連接的參數(shù)

第一步:連接MySQL數(shù)據(jù)庫

config = {'host':'192.168.0.102',
        'user':'Yeung',
        'password':'sjm13802448449ys',
        'port':3306,
        'database':'python_data',
        'charset':'utf8'} 

# 設(shè)置連接數(shù)據(jù)庫的參數(shù)
# 連接mysql數(shù)據(jù)庫服務(wù)端
# 分別輸入主機(jī)ip崔慧,用戶名惶室,登錄賬號玄货,端口悼泌,要連接的數(shù)據(jù)庫名稱以及編碼

conn = pymysql.connect(**config)  # 建立連接

第二步:read_sql讀取SQL查詢,并返回DataFrame數(shù)據(jù)框

sql_2 = 'SELECT * FROM data_02'
data_2 = pd.read_sql(sql_2,conn)
print(data_2.head())

conn.close()  # 關(guān)閉連接
    Tno Tname Tsex  Age Prof   college
0  1001    赤峰    男   61  副教授   中山大學(xué)   
1  1002   王平風(fēng)    女   48   助教      北京大學(xué)
2  1003   劉冰云    女   42   助教      南京大學(xué)
3  1004   珂克桓    男   29   助教  中山大學(xué)    
4  1005   張旭雨    男   50   講師    上海交通大學(xué)

(3)方法3 → pd.read_sql_query()

  • read_sql_query(sql,con, index_col=None……)隘世,將SQL查詢讀取到DataFrame數(shù)據(jù)框
    • 參數(shù):
    • sql鸠踪,要執(zhí)行的SQL語句
    • con,數(shù)據(jù)庫連接的參數(shù)

第一步:連接MySQL數(shù)據(jù)庫

config = {'host':'192.168.0.102',
        'user':'Yeung',
        'password':'sjm13802448449ys',
        'port':3306,
        'database':'python_data',
        'charset':'utf8'} 

# 設(shè)置連接數(shù)據(jù)庫的參數(shù)
# 連接mysql數(shù)據(jù)庫服務(wù)端
# 分別輸入主機(jī)ip械媒,用戶名评汰,登錄賬號,端口兰绣,要連接的數(shù)據(jù)庫名稱以及編碼

conn = pymysql.connect(**config)  # 建立連接

第二步:read_sql_query讀取SQL查詢编振,并返回DataFrame數(shù)據(jù)框

sql_3 = 'SELECT * FROM customers'
data_3 = pd.read_sql_query(sql_3,conn)
print(data_3.head())

conn.close()  # 關(guān)閉連接
      cust_id      cust_name          cust_address cust_city cust_state  \
0  1000000001   Village Toys        200 Maple Lane   Detroit         MI   
1  1000000002     Kids Place  333 South Lake Drive  Columbus         OH   
2  1000000003        Fun4All         1 Sunny Place    Muncie         IN   
3  1000000004        Fun4All   829 Riverside Drive   Phoenix         AZ   
4  1000000005  The Toy Store      4545 53rd Street   Chicago         IL   

  cust_zip cust_country        cust_contact             cust_email  
0    44444          USA          John Smith  sales@villagetoys.com  
1    43333          USA      Michelle Green                   None  
2    42222          USA           Jim Jones     jjones@fun4all.com  
3    88888          USA  Denise L. Stephens  dstephens@fun4all.com  
4    54545          USA          Kim Howard                   None  

二踪央、讀取數(shù)據(jù)庫文件

使用sqlite3第三方庫讀取數(shù)據(jù)庫文件 .db。

SQLite是一個軟件庫畅蹂,實現(xiàn)了自給自足的、無服務(wù)器的累贤、零配置的少漆、事務(wù)性的 SQL 數(shù)據(jù)庫引擎。SQLite是在世界上最廣泛部署的SQL數(shù)據(jù)庫引擎渗磅。SQLite源代碼不受版權(quán)限制。

import sqlite3
os.chdir(r'E:\python_learn\train')  # 相對路徑


cnn = sqlite3.connect('douban_comment_data.db')  # 建立連接
sql_query = 'SELECT * FROM comment'
data = pd.read_sql_query(sql_query,cnn)

data.head()
返回數(shù)據(jù)前5條.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仔掸,一起剝皮案震驚了整個濱河市医清,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鞋怀,老刑警劉巖持搜,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葫盼,死亡現(xiàn)場離奇詭異,居然都是意外死亡贫导,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門闺金,熙熙樓的掌柜王于貴愁眉苦臉地迎上來峰档,“玉大人,你說我怎么就攤上這事掀亩』肚辏” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵炼七,是天一觀的道長布持。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任逞敷,我火速辦了婚禮灌侣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘牛柒。我一直安慰自己痊乾,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布蛾魄。 她就那樣靜靜地躺著湿滓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扔水。 梳的紋絲不亂的頭發(fā)上朝氓,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音嘹狞,去河邊找鬼疹启。 笑死,一個胖子當(dāng)著我的面吹牛筷屡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播燎潮,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼扼倘,長吁一口氣:“原來是場噩夢啊……” “哼除呵!你這毒婦竟也來了爪喘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤泛豪,失蹤者是張志新(化名)和其女友劉穎侦鹏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體价卤,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡聚请,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年驶赏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煤傍。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡蚯姆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出龄恋,到底是詐尸還是另有隱情,我是刑警寧澤它碎,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布显押,位于F島的核電站,受9級特大地震影響挖息,放射性物質(zhì)發(fā)生泄漏兽肤。R本人自食惡果不足惜绪抛,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一电禀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦宛官、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至费变,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扛稽,已是汗流浹背滑负。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留帮匾,地道東北人痴鳄。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像哼转,于是被迫代替她去往敵國和親槽华。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容