python將數據插入數據庫的方法:
首先讀入數據並建立數據庫連接;
然后創建數據庫;
接着執行插入數據語句,迭代讀取每行數據;
最后關閉數據庫連接即可。
比如現在我們要將如下Excel數據表格插入到MySQL數據庫中,該如何實現呢?
實現代碼:
#導入需要使用到的數據模塊
import pandas as pd
import pymysql
#讀入數據
filepath = 'E:\_DataSet\catering_sale.xls'
data = pd.read_excel(filepath)
#建立數據庫連接
db = pymysql.connect('localhost','root','1234','python_analysis')
#獲取游標對象
cursor = db.cursor()
#創建數據庫,如果數據庫已經存在,注意主鍵不要重復,否則出錯
try:
cursor.execute('create table catering_sale(num int primary key,date datetime, sale float )')
except:
print('數據庫已存在!')
#插入數據語句
query = """insert into catering_sale (num, date, sale) values (%s,%s,%s)"""
#迭代讀取每行數據
#values中元素有個類型的強制轉換,否則會出錯的
#應該會有其他更合適的方式,可以進一步了解
for r in range(0, len(data)):
num = data.ix[r,0]
date = data.ix[r,1]
sale = data.ix[r,2]
values = (int(num), str(date), float(sale))
cursor.execute(query, values)
#關閉游標,提交,關閉數據庫連接
#如果沒有這些關閉操作,執行后在數據庫中查看不到數據
cursor.close()
db.commit()
db.close()
#重新建立數據庫連接
db = pymysql.connect('localhost','root','1234','python_anylysis')
cursor = db.cursor()
#查詢數據庫並打印內容
cursor.execute('''select * from catering_sale''')
results = cursor.fetchall()
for row in results:
print(row)
#關閉
cursor.close()
db.commit()
db.close()