模塊安裝
使用以下命令安裝 PyMySQL:
$ pip install PyMySQL
若系統不支持 pip,還可以這樣安裝:
$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL/
$ python3 setup.py install
Python連接MySQL數據庫
# -*- coding:utf-8 -*-
import pymysql
import pandas as pd
from pandas import DataFrame,Series
# 打開數據庫連接(host一般都是localhost,user填寫用戶名,password是密碼,port一般也是3306)
db = pymysql.connect(host='localhost', user='root', password='******', port=3306)
cursor = db.cursor() #獲取遊標
data = cursor.execute("SELECT * FROM ajx.zhibiao")# 執行SQL查詢,獲取數據
data = list(cursor.fetchall())# 獲取單條數據
db.close()# 關閉數據庫連接
#獲取的數據存入本地(也可在下面的模型中直接使用 data )
re_outfile = u'D:\\pythondata\\re_zhibiao.xlsx'
data_re.to_excel(re_outfile)
print(u'數據讀取結束,並保存至本地:', str(outputfile))
如果還需要獲取到列名,需要加一句了:
# -*- coding:utf-8 -*-
import pymysql
import pandas as pd
from pandas import DataFrame,Series
# 打開數據庫連接(host一般都是localhost,user填寫用戶名,password是密碼,port一般也是3306)
db = pymysql.connect(host='localhost', user='root', password='******', port=3306)
# 獲取數據
cursor = db.cursor() #獲取遊標
data = cursor.execute("SELECT * FROM ajx.zhibiao")# 執行SQL查詢,獲取數據
data = list(cursor.fetchall())# 獲取單條數據
# 獲取列名列表
# ################################################相對上一段代碼有改動的地方
fea = cursor.execute("SHOW FULL COLUMNS FROM ajx.zhibiao")#獲取列名
fea = list(cursor.fetchall())
lis=[]
for i in fea:
lis.append(list(i)[0])
data = pd.DataFrame(data,columns=lis)#list轉化成dataframe格式
columns = data.columns.values.tolist()
# #######################################################################
db.close()# 關閉數據庫連接
#獲取的數據存入本地(也可在下面的模型中直接使用 data )
re_outfile = u'D:\\pythondata\\re_zhibiao.xlsx'
data_re.to_excel(re_outfile)
print(u'數據讀取結束,並保存至本地:', str(outputfile))
如果在所有的列中,你只需要獲取列名中含有特定字符的列,那麼就是這樣來實現:
# -*- coding:utf-8 -*-
import pymysql
import pandas as pd
from pandas import DataFrame,Series
# 打開數據庫連接(host一般都是localhost,user填寫用戶名,password是密碼,port一般也是3306)
db = pymysql.connect(host='localhost', user='root', password='******', port=3306)
# 獲取數據
cursor = db.cursor() #獲取遊標
data = cursor.execute("SELECT * FROM ajx.zhibiao")# 執行SQL查詢,獲取數據
data = list(cursor.fetchall())# 獲取單條數據
# 獲取列名列表
fea = cursor.execute("SHOW FULL COLUMNS FROM ajx.zhibiao")#獲取列名
fea = list(cursor.fetchall())
lis=[]
for i in fea:
lis.append(list(i)[0])
data = pd.DataFrame(data,columns=lis)#list轉化成dataframe格式
columns = data.columns.values.tolist()
db.close()# 關閉數據庫連接
#獲取列名中包含特定字符的列
# #################################相對上一段代碼有改動的地方
col_re = [] # 存儲包含‘re’字段的列名
for i in columns:
if 're' in i:
col_re.append(i)
data_re = data[col_re] # 根據列名取列
data_re = DataFrame(data_re) # 轉化爲DataFrame格式
# ##################################################
#獲取的數據存入本地(也可在下面的模型中直接使用 data )
re_outfile = u'D:\\pythondata\\re_zhibiao.xlsx'
data_re.to_excel(re_outfile)
print(u'數據讀取結束,並保存至本地:', str(outputfile))
Python DataFrame寫入 MySQL
import pandas as pd
from sqlalchemy import create_engine
#獲取到dataframe格式的數據
datafile = u'D:\\pythondata\\learn\\split.xlsx'
data = pd.read_excel(datafile)
#填寫鏈接信息
engine = create_engine("mysql+pymysql://【此處填用戶名】:【此處填密碼】@【此處填host】:【此處填port】/【此處填數據庫的名稱】?charset=utf8")
# 例如:engine = create_engine("mysql+pymysql://root:666666@localhost:3306/ajx?charset=utf8")
#開始寫入
data.to_sql(name = 'split',con = engine,if_exists = 'append',index = False,index_label = False)
DataFrame.to_sql
(name,con,schema = None,if_exists ='fail',index = True,index_label = None,chunksize = None,dtype = None,method = None )
name:表名;
if_exists : {'fail','replace','append'},默認'fail'。代表如果name表已存在,則如何操作。
- if_exists ='fail':若表存在,則報錯;
- if_exists ='replace':若表存在,則刪除表中數據重新導入;
- if_exists ='append':若表存在,則保留表中數據,並將新數據插入;
這兩個是關鍵參數,其他參數的解釋可以參考文檔:
http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_sql.html