一潜必、讀取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()