Python连接MySQL数据库(pymysql),DataFrame写入 MySQL(create_engine)- Python代码
生活随笔
收集整理的這篇文章主要介紹了
Python连接MySQL数据库(pymysql),DataFrame写入 MySQL(create_engine)- Python代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模塊安裝
使用以下命令安裝 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
?
?
?
總結
以上是生活随笔為你收集整理的Python连接MySQL数据库(pymysql),DataFrame写入 MySQL(create_engine)- Python代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sentinel 端口_双剑合璧Naco
- 下一篇: Excel里,vlookup函数各种应用